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

Erreur « Obtenir le jeton d'accès est vide » lors de l'exécution de l'exemple de code de formation msgraph-sdk-go

WBOY
Libérer: 2024-02-09 08:12:30
avant
673 Les gens l'ont consulté

运行 msgraph-sdk-go 训练示例代码时出现“获取访问令牌为空”错误

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.

Contenu de la question

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

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

Solution de contournement

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!

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