Skip to content

Instantly share code, notes, and snippets.

@RenanMatias
Last active August 10, 2023 17:18
Show Gist options
  • Save RenanMatias/07baa41baa5cbb61db2b618439842a65 to your computer and use it in GitHub Desktop.
Save RenanMatias/07baa41baa5cbb61db2b618439842a65 to your computer and use it in GitHub Desktop.

Criando App no Sharepoint para capturar o Access Token

Passo 1 - Registrar um Aplicativo

  • Acessar a URL https://{site_url}/sites/[TENANT-NAME]/_layouts/15/appregnew.aspx
    • [TENANT-NAME] - é nome do site, podendo conter o subsite
  • Em ID do Cliente, clicar em Gerar/Generate;
  • Copiar o ID gerado e salvar em algum lugar seguro;
  • Em Segredo do Cliente, clicar em Gerar/Generate;
  • Copiar o Segredo gerado e salvar em algum lugar seguro;
  • Em Título, inserir um nome de identificação. Atualmente estou colocando Performance CSC;
  • Em Domínio do Aplicativo, pode inserir qualquer site, não faz diferença. Atualmente estou colocando google.com
  • Em URL de Redirecionamento, insira https://localhost/
  • Clicar em Criar

Passo 2 - Concedendo permissão ao App

  • Acessar a URL https://{site_url}/sites/[TENANT-NAME]/_layouts/15/appinv.aspx
  • Em Id do Aplicativo, inserir o ID do Cliente gerado anteriormente e clicar em Pesquisa;
  • Os Campos Título, Domínio do Aplicativo e URL de Redirecionamento serão preenchidos automaticamente;
  • Em XML de Solicitação de Permissão, inserir:
<AppPermissionRequests AllowAppOnlyPolicy="true">
  <AppPermissionRequest Scope="http://sharepoint/content/sitecollection/web" Right="FullControl"/>
</AppPermissionRequests>
  • Clicar em Criar
  • Clicar em Confiar

Passo 3 - Obter o access token

  • Navegue para as configurações do site;
  • Clique em Permissões do aplicativo do conjunto de sites;
  • em Identificador de Aplicativo, copiar o conteúdo e salvar em um local seguro

Capturando o Access Token via REST

site: https://{site_url}/sites/{site}/{subsite}

  • ID do Cliente: Adquirido na etapa anterior

  • Segredo do Cliente: Adquirido na etapa anterior

  • Tenent ID: Adquirido na etapa anterior

  • Tenet NAME: {organização}.sharepoint.com

  • URL

https://accounts.accesscontrol.windows.net/{Tenent ID}/tokens/OAuth/2
  • Method POST
  • Headers:
{
  "Content-Type": "application/x-www-form-urlencoded",
  "Accept": "application/json;data=verbose"
}
  • Body/Form:
{
  "grant_type":"client_credentials",
  "resource": "00000003-0000-0ff1-ce00-000000000000/{Tenet Name}@{Tenent ID}",
  "client_id":"{Client ID}@{Tenet ID}",
  "client_secret":"{client_secret}"
}
  • Se tudo correto o status dda resposta deve ser 200 e o response deve conter o seguinte padrão;
{
	"token_type": "Bearer",
	"expires_in": "86399",
	"not_before": "1659559508",
	"expires_on": "1659646208",
	"resource": "00000003-0000-0ff1-ce00-000000000000/{Tenet Name}@{Tenent ID}",
	"access_token": "access_token"
}

Acessando o Sharepoint

Acessando uma lista do Sharepoint

  • URL - varia de acordo com a demanda, segue abaixo alguns exemplos;
  • Method GET
  • Headers
{
  "Accept":"application/json;odata=verbose",
  "Authorization": "Bearer {access_token}"
}

Exemplos de URL

fontes: Trabalhar com pastas e arquivos com REST

Propriedades de uma lista do Sharepoint

https://{site_url}/_api/web/lists/GetByTitle('List Title')

Itens de uma lista do Sharepoint específica

https://{site_url}/_api/web/lists/GetByTitle('List Title')/items

  • Por padrão retorna os 100 primeiros itens;
  • Para definir a quantidade de itens, acrescente ?$top={quantidade} no final da URL, onde a quantidade é o total de itens;
    • Neste caso, o máximo é de 5.000 itens;

Listar arquivos de uma pasta

https://{site_url}/_api/web/GetFolderByServerRelativeUrl('/Folder Name')/Files

Capturar o conteúdo de um arquivo

https://{site_url}/_api/web/GetFileByServerRelativeUrl('/Folder Name/{file_name})/$value

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment