Maison  >  Article  >  développement back-end  >  exemple de code msgraph-sdk-go pour obtenir l'échec du lecteur utilisateur

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

王林
王林avant
2024-02-08 22:06:30746parcourir

用于获取用户驱动器的 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())

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

, 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"})

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!

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer