J'ai une liste en ligne SharePoint et je dois récupérer les données de cette liste en dehors de SharePoint. Je dois utiliser l'approche de jeton d'accès, pour cela, j'ai créé une application dans Azure AD dans le même locataire et j'essaie d'obtenir la liste, mais cela donne une erreur non autorisée.
J'ai essayé d'utiliser l'API REST de SharePoint et de passer un jeton dans les en-têtes. j'ai référencé l'URL ci-dessous: https://www.ktskumar.com/2017/01 / access-sharepoint-online-using-postman / Mais cela me donne une erreur comme "{" error_description ":" Jeton JWT non valide. Le jeton a expiré. "}" Dans Postman lui-même. J'ai ajouté des autorisations d'API dans les inscriptions d'applications et je n'ai toujours pas de chance!
3 Réponses :
J'ai testé les étapes du lien que vous avez fourni. Cela fonctionne bien pour moi.
Cette erreur est due à l'expiration du secret client de l'application que vous avez enregistrée sur https: //.sharepoint.com/_layouts/15/appinv.aspx.
Vous pouvez enregistrer une nouvelle application ou remplace un secret client expirant dans un complément SharePoint .
J'obtiens "{" error_description ":" Jeton JWT non valide. Impossible de résoudre le jeton d'émetteur. Erreur "}" lors de l'utilisation des mêmes étapes sur SharePoint en ligne.
@MayureshJaiswal Quand avez-vous créé l'application sur https: //.sharepoint.com/_layouts/15/appinv.aspx?
J'ai obtenu le jeton du porteur et je peux accéder au Web en utilisant l'api de repos avec succès, maintenant je veux obtenir l'objet de liste SPlist afin de pouvoir l'utiliser dans mon code existant
L'application que vous avez enregistrée dans Azure et le complément SharePoint sont différentes, et les jetons sont également différents.
Vous pouvez utiliser l'authentification complémentaire pour accéder à SharePoint.
Si vous souhaitez utiliser l'application azure pour accéder à SharePoint, vous pouvez vérifier ce fil .
J'ai résolu le problème, commencez par créer un jeton d'accès, puis effectuez une requête http en passant le jeton.
using (var context = new ClientContext("SiteURL")) { context.ExecutingWebRequest += Context_ExecutingWebRequest; } public void Context_ExecutingWebRequest(object sender, WebRequestEventArgs e) { e.WebRequestExecutor.RequestHeaders["Authorization"] = "Bearer " + GetAccessToken(); } public string GetAccessToken() { try { #region Get Access token for Azure AD access var client = new RestClient("https://accounts.accesscontrol.windows.net/" + TenantID + "/tokens/OAuth/2"); var request = new RestRequest(Method.POST); request.AddParameter("grant_type", "client_credentials"); request.AddParameter("client_id", "ClientID@TenantID"); request.AddParameter("client_secret", "ClientSecret"); request.AddParameter("resource", "00000003-0000-0ff1-ce00-000000000000/SharePointSite@TenantID"); IRestResponse restClientResponse = client.Execute(request); var DeserializeObject = JsonConvert.DeserializeObject<BearerToken>(restClientResponse.Content.ToString()); string accessToken = DeserializeObject.AccessToken; #endregion return accessToken; } catch (Exception ex) { throw ex; } }