L'éditeur PHP Xiaoxin vous a posé aujourd'hui une question sur l'exemple de code de formation msgraph-sdk-go. Pendant l'exécution, vous pouvez rencontrer l'erreur « Obtenir le jeton d'accès est vide ». Cette erreur peut empêcher l'exécution correcte du code et affecter les résultats de la formation. Dans cet article, nous présenterons en détail la cause et la solution de ce problème pour vous aider à exécuter l'exemple de code en douceur et à profiter d'une meilleure expérience de formation.
Lorsque j'essaie d'exécuter le code de formation msgraph-sdk-go à partir d'ici : https://github.com/microsoftgraph/msgraph-training-go, je reçois invalidauthenticationtokenmsg:执行图形 api 调用时访问令牌为空
.
J'ai configuré un compte développeur Microsoft avec un bac à sable instantané pour une utilisation d'essai.
J'ai créé l'enregistrement de l'application comme décrit dans le didacticiel ici et j'ai accordé à l'application les autorisations requises.
Le code est capable d'obtenir l'apptoken, mais l'appel pour obtenir les utilisateurs échoue avec l'erreur ci-dessus. Est-ce que j'ai râté quelque chose?
J'ai essayé le code suivant de l'exemple msgraph-training
func (g *graphhelper) initializegraphforappauth() error { clientid := os.getenv("client_id") tenantid := os.getenv("tenant_id") clientsecret := os.getenv("client_secret") credential, err := azidentity.newclientsecretcredential(tenantid, clientid, clientsecret, nil) if err != nil { return err } g.clientsecretcredential = credential // create an auth provider using the credential authprovider, err := auth.newazureidentityauthenticationproviderwithscopes(g.clientsecretcredential, []string{ "https://graph.microsoft.com/.default", }) if err != nil { return err } // create a request adapter using the auth provider adapter, err := msgraphsdk.newgraphrequestadapter(authprovider) if err != nil { return err } // create a graph client using request adapter client := msgraphsdk.newgraphserviceclient(adapter) g.appclient = client return nil } // this part works, and i get the apptoken with required scope, once decoded. func (g *graphhelper) getapptoken() (*string, error) { token, err := g.clientsecretcredential.gettoken(context.background(), policy.tokenrequestoptions{ scopes: []string{ "https://graph.microsoft.com/.default", }, }) if err != nil { return nil, err } fmt.println("expires on : ", token.expireson) return &token.token, nil } // the getusers function errors out func (g *graphhelper) getusers() (models.usercollectionresponseable, error) { var topvalue int32 = 25 query := users.usersrequestbuildergetqueryparameters{ // only request specific properties select: []string{"displayname", "id", "mail"}, // get at most 25 results top: &topvalue, // sort by display name orderby: []string{"displayname"}, } resp, err := g.appclient.users(). get(context.background(), &users.usersrequestbuildergetrequestconfiguration{ queryparameters: &query, }) if err != nil { fmt.println("users.get got error", err.error(), resp) printodataerror(err) } resp, err = g.appclient.users(). get(context.background(), nil) if err != nil { fmt.println("users.get got error with nil", err.error(), resp) } return resp, err }
J'ai ajouté les autorisations user.read.all
dans l'application comme décrit dans le tutoriel.
Au lieu d'obtenir une liste d'utilisateurs, j'obtiens l'erreur suivante :
Users.Get got Error error status code received from the API <nil> error: error status code received from the API code: InvalidAuthenticationTokenmsg: Access token is empty.Users.Get got Error with nil error status code received from the API <nil>
Eh bien, après quelques essais et erreurs, le correctif qui a fonctionné pour moi était que la version dans l'exemple ne correspondait pas à l'application réelle que j'essayais. L'application bêta msgraph que j'utilise est la v0.49 et le didacticiel msgraphsdk utilise la v0.48. La commande go mod a initialement sélectionné la dernière v0.49, je suppose, après avoir consulté le fichier msgraph-training go.mod pour utiliser la v0.48. com/microsoftgraph/msgraph-training-go" rel="nofollow noreferrer">Dépôt Tout commence à fonctionner. J'espère que cela aidera les autres à l'avenir.
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!