php editor Xiaoxin today brought you a question about the msgraph-sdk-go training sample code. During the run, you may encounter the "Get access token is empty" error. This error may cause the code to fail to execute correctly and affect the training results. In this article, we will introduce the cause and solution of this problem in detail to help you run the sample code smoothly and enjoy a better training experience.
When trying to run the msgraph-sdk-go training code from here: https://github.com/microsoftgraph/msgraph-training-go, I receive invalidauthenticationtokenmsg : The access token is empty
when executing a graphics api call.
I configured a Microsoft developer account with an instant sandbox for trial use.
I created the application registration as described in the tutorial here and granted the application the required permissions.
The code is able to get the apptoken, but the call to get users fails with the above error. Am I missing something here?
I tried the following code from the msgraph-training example
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 }
I have added the user.read.all
permission to the application as described in the tutorial.
Instead of getting a list of users, I get the following error:
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>
Well, after some trial and error, the fix that worked for me was that the version in the example didn't match the actual application I was trying. The beta msgraph application I'm using is v0.49, and the msgraphsdk tutorial uses v0.48. The go mod command initially selected the latest v0.49, I guess, after looking at the go.mod file for msgraph-training go.mod file to use v0.48. com/microsoftgraph/msgraph-training-go" rel="nofollow noreferrer">Repository Everything starts working. Hope this helps others in the future.
The above is the detailed content of 'Get access token is empty' error when running msgraph-sdk-go training sample code. For more information, please follow other related articles on the PHP Chinese website!