Editor PHP Xigua memperkenalkan: Apabila menggunakan kod sampel msgraph-sdk-go untuk mendapatkan pemacu pengguna, anda mungkin menghadapi kegagalan. Ini mungkin disebabkan oleh isu sambungan rangkaian, kebenaran API yang tidak mencukupi atau ralat pengekodan. Untuk menyelesaikan masalah ini, kami boleh cuba menyemak sambungan rangkaian, memastikan kebenaran API ditetapkan dengan betul dan menyemak sama ada logik kod adalah betul. Jika masalah berterusan, kami boleh menyemak dokumentasi rasmi atau meminta bantuan komuniti untuk mencari lebih banyak penyelesaian.
msgraph-sdk-go Kod sampel untuk mendapatkan pemacu pengguna gagal dengan ralat 401 berikut. Ia menjangkakan badan permintaan mengandungi client_secret, walaupun tiada tempat dalam kod sampel tempat badan permintaan dibuat.
Kod sampel telah berjaya mengesahkan apl berdaftar saya melalui pelayar web.
Apakah yang diperlukan untuk menggunakan msgraph-sdk-go?
Ini adalah kod yang gagal:
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())
Ralatnya adalah seperti berikut:
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: Menambah lebih banyak butiran pada jawapan baywet
Saya telah mencipta bukti kelayakan kod pelanggan dan peranti seperti yang ditunjukkan oleh baywet tetapi saya telah menambah medan tennantid.
Di titik 5 saya memilih aplikasi mudah alih/desktop tetapi ubah hala uri ialah http://localhost
. Pilihan saya untuk ubah hala uri berbeza daripada pilihannya.
Titik 6 adalah kunci untuk menjadikannya berfungsi. Sebaik sahaja saya menetapkan 选择 <code>yes
启用以下移动和桌面流程 untuk
Saya juga mempunyai kebenaran api ini. PenyelesaianAndaikan anda menyediakan pelanggan dengan kelayakan kod peranti dan mendapat mesej ralat dengan kod yang serupa dengan ini
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"})
https://login.microsoftonline.com/common/oauth2/nativeclient
Pastikan untuk memilih platform aplikasi mudah alih dan desktop dan semak Beberapa tangkapan skrin untuk membimbing anda. 🎜
Atas ialah kandungan terperinci msgraph-sdk-go contoh kod untuk mendapatkan pemacu pengguna gagal. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!