L'éditeur PHP Xigua présente : Lorsque vous utilisez l'exemple de code msgraph-sdk-go pour obtenir le lecteur utilisateur, vous pouvez rencontrer des échecs. Cela peut être dû à des problèmes de connexion réseau, à des autorisations API insuffisantes ou à des erreurs de codage. Pour résoudre ce problème, nous pouvons essayer de vérifier la connexion réseau, nous assurer que les autorisations API sont correctement définies et vérifier si la logique du code est correcte. Si le problème persiste, nous pouvons consulter la documentation officielle ou demander de l'aide à la communauté pour trouver plus de solutions.
msgraph-sdk-go L'exemple de code permettant d'obtenir le lecteur utilisateur échoue avec l'erreur 401 suivante. Il s'attend à ce que le corps de la requête contienne client_secret, bien qu'il n'y ait aucun endroit dans l'exemple de code où le corps de la requête est créé.
L'exemple de code a authentifié avec succès mon application enregistrée via un navigateur Web.
Que faut-il pour utiliser msgraph-sdk-go ?
Voici le code défaillant :
result, err := client.me().drive().get(context.background(), nil) if err != nil { fmt.printf("error getting the drive: %v\n", err) printodataerror(err) } fmt.printf("found drive : %v\n", *result.getid())
L'erreur est la suivante :
Error getting the drive: DeviceCodeCredential authentication failed POST https://login.microsoftonline.com/efa4b4f3-5e38-4866-9206-79c604d86e7c/oauth2/v2.0/token -------------------------------------------------------------------------------- RESPONSE 401 Unauthorized -------------------------------------------------------------------------------- { "error": "invalid_client", "error_description": "AADSTS7000218: The request body must contain the following parameter: 'client_assertion' or 'client_secret'.\r\nTrace ID: b6f28bb4-6bed-4dfe-a275-c0343fb91e01\r\nCorrelation ID: c06d2257-b3ab-4df3-ba58-ab271cf97508\r\nTimestamp: 2023-02-14 14:18:22Z", "error_codes": [ 7000218 ], "timestamp": "2023-02-14 14:18:22Z", "trace_id": "b6f28bb4-6bed-4dfe-a275-c0343fb91e01", "correlation_id": "c06d2257-b3ab-4df3-ba58-ab271cf97508", "error_uri": "https://login.microsoftonline.com/error?code=7000218" }
EDIT : Ajout de plus de détails à la réponse de baywet
J'ai créé les informations d'identification du code client et de l'appareil comme indiqué par baywet mais j'ai ajouté le champ tennantid.
Au point 5, j'ai sélectionné l'application mobile/de bureau mais l'uri de redirection est http://localhost
. Mes options pour l'URI de redirection sont différentes des siennes.
Le point 6 est la clé pour que cela fonctionne. Une fois que j'ai défini le 选择 <code>yes
启用以下移动和桌面流程 pour
J'ai également ces autorisations API. Solution de contournementSupposons que vous configuriez le client avec les informations d'identification du code de l'appareil et que vous receviez un message d'erreur avec un code similaire à celui-ci
cred, err := azidentity.NewDeviceCodeCredential(&azidentity.DeviceCodeCredentialOptions{ ClientID: "CLIENT_ID", UserPrompt: func(ctx context.Context, message azidentity.DeviceCodeMessage) error { fmt.Println(message.Message) return nil }, }) client := msgraphsdk.NewGraphServiceClientWithCredentials(cred, []string{"User.Read"})
https://login.microsoftonline.com/common/oauth2/nativeclient
Assurez-vous de sélectionner les plates-formes d'applications mobiles et de bureau et vérifiez l'URL de Quelques captures d'écran pour vous guider. 🎜
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!