Heim >Backend-Entwicklung >Golang >Der msgraph-sdk-go-Beispielcode zum Abrufen des Benutzerlaufwerks schlägt fehl

Der msgraph-sdk-go-Beispielcode zum Abrufen des Benutzerlaufwerks schlägt fehl

王林
王林nach vorne
2024-02-08 22:06:30798Durchsuche

用于获取用户驱动器的 msgraph-sdk-go 示例代码失败

PHP-Editor Xigua stellt vor: Bei der Verwendung des msgraph-sdk-go-Beispielcodes zum Abrufen des Benutzerlaufwerks können Fehler auftreten. Dies kann auf Netzwerkverbindungsprobleme, unzureichende API-Berechtigungen oder Codierungsfehler zurückzuführen sein. Um dieses Problem zu lösen, können wir versuchen, die Netzwerkverbindung zu überprüfen, sicherzustellen, dass die API-Berechtigungen richtig eingestellt sind, und prüfen, ob die Codelogik korrekt ist. Wenn das Problem weiterhin besteht, können wir die offizielle Dokumentation überprüfen oder die Community um Hilfe bitten, um weitere Lösungen zu finden.

Frageninhalt

msgraph-sdk-go Der Beispielcode zum Abrufen des Benutzerlaufwerks schlägt mit dem folgenden 401-Fehler fehl. Es wird erwartet, dass der Anfragetext „client_secret“ enthält, obwohl es im Beispielcode keine Stelle gibt, an der der Anfragetext erstellt wird.

Der Beispielcode hat meine registrierte App erfolgreich über einen Webbrowser authentifiziert.

Was wird benötigt, um msgraph-sdk-go zu verwenden?

Dies ist der Fehlercode:

result, err := client.me().drive().get(context.background(), nil)
if err != nil {
    fmt.printf("error getting the drive: %v\n", err)
    printodataerror(err)
}
fmt.printf("found drive : %v\n", *result.getid())

Der Fehler ist wie folgt:

Error getting the drive: DeviceCodeCredential authentication failed
POST https://login.microsoftonline.com/efa4b4f3-5e38-4866-9206-79c604d86e7c/oauth2/v2.0/token
--------------------------------------------------------------------------------
RESPONSE 401 Unauthorized
--------------------------------------------------------------------------------
{
  "error": "invalid_client",
  "error_description": "AADSTS7000218: The request body must contain the following parameter: 'client_assertion' or 'client_secret'.\r\nTrace ID: b6f28bb4-6bed-4dfe-a275-c0343fb91e01\r\nCorrelation ID: c06d2257-b3ab-4df3-ba58-ab271cf97508\r\nTimestamp: 2023-02-14 14:18:22Z",
  "error_codes": [
    7000218
  ],
  "timestamp": "2023-02-14 14:18:22Z",
  "trace_id": "b6f28bb4-6bed-4dfe-a275-c0343fb91e01",
  "correlation_id": "c06d2257-b3ab-4df3-ba58-ab271cf97508",
  "error_uri": "https://login.microsoftonline.com/error?code=7000218"
}

EDIT: Weitere Details zu Baywets Antwort hinzufügen

Ich habe die Client- und Gerätecode-Anmeldeinformationen erstellt, wie von baywet gezeigt, aber ich habe das Tennantid-Feld hinzugefügt.

In Punkt 5 habe ich die Mobil-/Desktop-App ausgewählt, aber die Weiterleitungs-URI lautet http://localhost. Meine Optionen für die Weiterleitungs-URI unterscheiden sich von seinen.

Punkt 6 ist der Schlüssel zum Erfolg. Sobald ich das 选择 <code>yes 启用以下移动和桌面流程 für

eingestellt hatte, begann meine App zu funktionieren.

Ich habe auch diese API-Berechtigungen.

Problemumgehung

Angenommen, Sie richten den Client mit Gerätecode-Anmeldeinformationen ein und erhalten eine Fehlermeldung mit einem ähnlichen Code

cred, err := azidentity.NewDeviceCodeCredential(&azidentity.DeviceCodeCredentialOptions{
    ClientID: "CLIENT_ID",
    UserPrompt: func(ctx context.Context, message azidentity.DeviceCodeMessage) error {
        fmt.Println(message.Message)
        return nil
    },
})

client := msgraphsdk.NewGraphServiceClientWithCredentials(cred, []string{"User.Read"})

Die registrierte Anwendung muss ordnungsgemäß konfiguriert sein, um das Herunterfahren des Geräts zu ermöglichen. Um dies zu tun:
  1. Gehen Sie zum Azure-Portal
  2. Navigieren Sie zur Anwendungsregistrierung (Azure Active Directory, dann Anwendungsregistrierung).
  3. Finden Sie Ihre Bewerbungsregistrierung in der Liste.
  4. Klicken Sie auf die Registerkarte Authentifizierung
  5. https://login.microsoftonline.com/common/oauth2/nativeclientStellen Sie sicher, dass Sie mobile und Desktop-App-Plattformen auswählen und
  6. die URL überprüfen.
  7. Setzen Sie „Folgende mobile und Desktop-Prozesse aktivieren“ auf „Ja“.
  8. Klicken Sie auf „Speichern“.

Ein paar Screenshots zur Orientierung. 🎜

Das obige ist der detaillierte Inhalt vonDer msgraph-sdk-go-Beispielcode zum Abrufen des Benutzerlaufwerks schlägt fehl. 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