Heim  >  Artikel  >  Backend-Entwicklung  >  Fehler „Zugriffstoken abrufen ist leer“ beim Ausführen des msgraph-sdk-go-Trainingsbeispielcodes

Fehler „Zugriffstoken abrufen ist leer“ beim Ausführen des msgraph-sdk-go-Trainingsbeispielcodes

WBOY
WBOYnach vorne
2024-02-09 08:12:30611Durchsuche

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

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.

Frageninhalt

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>

Workaround

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!

Stellungnahme:
Dieser Artikel ist reproduziert unter:stackoverflow.com. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen