Der PHP-Editor Xiaoxin hat Ihnen heute eine Frage zum msgraph-sdk-go-Trainingsbeispielcode gestellt. Während der Ausführung kann der Fehler „Zugriffstoken abrufen ist leer“ auftreten. Dieser Fehler kann dazu führen, dass der Code nicht korrekt ausgeführt wird und sich auf die Trainingsergebnisse auswirkt. In diesem Artikel stellen wir die Ursache und Lösung dieses Problems im Detail vor, damit Sie den Beispielcode reibungslos ausführen und ein besseres Trainingserlebnis genießen können.
Wenn ich versuche, den msgraph-sdk-go-Trainingscode von hier aus auszuführen: https://github.com/microsoftgraph/msgraph-training-go, erhalte ich invalidauthenticationtokenmsg:执行图形 api 调用时访问令牌为空
.
Ich habe ein Microsoft-Entwicklerkonto mit einer Instant-Sandbox zur Testnutzung konfiguriert.
Ich habe die Anwendungsregistrierung wie im Tutorial hier beschrieben erstellt und der Anwendung die erforderlichen Berechtigungen erteilt.
Der Code kann das Apptoken abrufen, aber der Aufruf zum Abrufen von Benutzern schlägt mit dem oben genannten Fehler fehl. Vermisse ich hier etwas?
Ich habe den folgenden Code aus dem msgraph-training-Beispiel ausprobiert
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 }
Ich habe die user.read.all
Berechtigungen in der App hinzugefügt, wie im Tutorial beschrieben.
Anstatt eine Benutzerliste zu erhalten, erhalte ich die folgende Fehlermeldung:
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>
Nun, nach einigem Ausprobieren hat bei mir die Lösung funktioniert, dass die Version im Beispiel nicht mit der tatsächlichen Anwendung übereinstimmte, die ich ausprobierte. Die von mir verwendete Beta-Msgraph-Anwendung ist v0.49 und das msgraphsdk-Tutorial verwendet v0.48. Der Befehl go mod wählte zunächst die neueste Version 0.49 aus, schätze ich, nachdem ich mir die msgraph-training-Datei go.mod angesehen hatte, um v0.48 zu verwenden. com/microsoftgraph/msgraph-training-go" rel="nofollow noreferrer">Repository Alles beginnt zu funktionieren. Ich hoffe, das hilft anderen in Zukunft.
Das obige ist der detaillierte Inhalt vonFehler „Zugriffstoken abrufen ist leer' beim Ausführen des msgraph-sdk-go-Trainingsbeispielcodes. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!