Rumah >pembangunan bahagian belakang >Golang >Ralat 'Dapatkan token akses kosong' semasa menjalankan kod contoh latihan msgraph-sdk-go

Ralat 'Dapatkan token akses kosong' semasa menjalankan kod contoh latihan msgraph-sdk-go

WBOY
WBOYke hadapan
2024-02-09 08:12:30708semak imbas

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

Editor PHP Xiaoxin hari ini membawakan anda soalan tentang kod contoh latihan msgraph-sdk-go. Semasa larian, anda mungkin menghadapi ralat "Dapatkan token akses kosong". Ralat ini boleh menyebabkan kod gagal dilaksanakan dengan betul dan menjejaskan keputusan latihan. Dalam artikel ini, kami akan memperkenalkan punca dan penyelesaian masalah ini secara terperinci untuk membantu anda menjalankan kod sampel dengan lancar dan menikmati pengalaman latihan yang lebih baik.

Kandungan soalan

Apabila cuba menjalankan kod latihan msgraph-sdk-go dari sini: https://github.com/microsoftgraph/msgraph-training-go, saya menerima invalidauthenticationtokenmsg:执行图形 api 调用时访问令牌为空 . Saya mengkonfigurasi akaun pembangun Microsoft dengan kotak pasir segera untuk kegunaan percubaan. Saya mencipta pendaftaran aplikasi seperti yang diterangkan dalam tutorial di sini dan memberikan permohonan kebenaran yang diperlukan. Kod ini boleh mendapatkan apptoken, tetapi panggilan untuk mendapatkan pengguna gagal dengan ralat di atas. Adakah saya kehilangan sesuatu di sini?

Saya mencuba kod berikut daripada contoh 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
}

Saya telah menambahkan user.read.all kebenaran dalam apl seperti yang diterangkan dalam tutorial. Daripada mendapatkan senarai pengguna, saya mendapat ralat berikut:

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>

Penyelesaian

Nah, selepas beberapa percubaan dan kesilapan, pembetulan yang berkesan untuk saya ialah versi dalam contoh tidak sepadan dengan aplikasi sebenar yang saya cuba. Aplikasi beta msgraph yang saya gunakan ialah v0.49, dan tutorial msgraphsdk menggunakan v0.48. Arahan mod go pada mulanya memilih v0.49 terkini, saya rasa, selepas melihat fail msgraph-training go.mod untuk menggunakan v0.48. com/microsoftgraph/msgraph-training-go" rel="nofollow noreferrer">Repositori Semuanya mula berfungsi. Semoga ini membantu orang lain pada masa akan datang.

Atas ialah kandungan terperinci Ralat 'Dapatkan token akses kosong' semasa menjalankan kod contoh latihan msgraph-sdk-go. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Artikel ini dikembalikan pada:stackoverflow.com. Jika ada pelanggaran, sila hubungi admin@php.cn Padam