Maison > développement back-end > Golang > le corps du texte

exemple de code msgraph-sdk-go pour obtenir l'échec du lecteur utilisateur

王林
Libérer: 2024-02-08 22:06:30
avant
770 Les gens l'ont consulté

用于获取用户驱动器的 msgraph-sdk-go 示例代码失败

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.

Contenu de la question

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())
Copier après la connexion

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"
}
Copier après la connexion

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

, mon application a commencé à fonctionner.

J'ai également ces autorisations API.

Solution de contournement

Supposons 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"})
Copier après la connexion
Les applications enregistrées doivent être correctement configurées pour permettre le processus d'arrêt de l'appareil. Pour ce faire :
  1. Accédez au portail Azure
  2. Accédez à l'enregistrement de l'application (Azure Active Directory, puis enregistrement de l'application).
  3. Retrouvez l'inscription de votre candidature dans la liste.
  4. Cliquez sur l'onglet Authentification
  5. https://login.microsoftonline.com/common/oauth2/nativeclientAssurez-vous de sélectionner les plates-formes d'applications mobiles et de bureau et vérifiez l'URL de
  6. .
  7. Réglez « Activer les processus mobiles et de bureau suivants » sur « Oui ».
  8. Cliquez sur "Enregistrer".

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!

source:stackoverflow.com
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!