Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Mendapatkan "Permintaan mempunyai bukti kelayakan pengesahan yang tidak sah" apabila menggunakan fail kunci json akaun perkhidmatan dalam aplikasi Go

Mendapatkan "Permintaan mempunyai bukti kelayakan pengesahan yang tidak sah" apabila menggunakan fail kunci json akaun perkhidmatan dalam aplikasi Go

WBOY
WBOYke hadapan
2024-02-09 12:18:201145semak imbas

在 Go 应用程序中使用服务帐户 json 密钥文件时获取“请求具有无效的身份验证凭据”

php Editor Banana Apabila menggunakan fail kunci JSON akaun perkhidmatan dalam aplikasi Go, anda mungkin menghadapi isu "Permintaan mempunyai bukti kelayakan pengesahan tidak sah". Masalah ini biasanya disebabkan oleh format atau kandungan fail kunci yang salah. Untuk menyelesaikan isu ini, pastikan fail kunci berada dalam format yang betul dan fail kunci mengandungi maklumat pengesahan yang betul. Juga cuba jana semula fail utama dan pastikan ia dikonfigurasikan dengan betul ke dalam aplikasi. Melalui kaedah ini, anda boleh menyelesaikan masalah "permintaan mempunyai bukti kelayakan pengesahan tidak sah" dan menggunakan fail kunci JSON akaun perkhidmatan secara normal.

Kandungan soalan

Saya sedang membangunkan aplikasi go pada projek gcp dan saya menggunakan perkhidmatan pengelogan awan google. Saya menghadapi masalah menjalankan apl kerana ia mengatakan bukti kelayakan pengesahan saya tidak sah apabila saya menggunakan kunci json akaun perkhidmatan.

Ini ialah coretan kod dengan ralat:

c, cerr := load(".env")
    if cerr != nil {
        log.fatalf("could not load config: %s", cerr)
        return
    }

    // initializes logger which writes to stdout
    ctx := context.background()
    opt := option.withcredentialsfile(c.googleapplicationcredentials);
    loggerclient, clienterr := logging.newclient(ctx, "poc-projects-01", opt)
    if clienterr != nil {
        log.fatal(clienterr)
    }

Ini adalah definisi fungsi load():

func Load(file string) (*Config, error) {
    viper.SetConfigFile(file)
    viper.AddConfigPath(".")
    viper.AutomaticEnv()
    if err := viper.ReadInConfig(); err != nil {
        return nil, err
    }
    
    c := &Config{
        GoogleApplicationCredentials: viper.GetString("GOOGLE_APPLICATION_CREDENTIALS"),
    }

    return c, nil
}

Saya mempunyai .env fail dengan kandungan berikut: google_application_credentials=json/path-to-json.json

Saya tidak tahu mengapa ia mengatakan token telah tamat tempoh walaupun ini adalah satu-satunya kunci json akaun perkhidmatan yang saya ada pada gcp dan mesin tempatan saya.

Penyelesaian

Anda boleh menjalankan gcloud auth application-default login a> dan pastikan anda menetapkannya kepada projek yang betul.

Semak googleapplicationscredentals sama ada kunci json yang sah ditetapkan dan sama ada pembolehubah persekitaran ditetapkan dengan betul, sila jalankan arahan berikut untuk menyemak

echo $google_application_credentials

Jika arahan tidak mengembalikan laluan yang betul kepada kekunci json, anda boleh menetapkan pembolehubah persekitaran menggunakan arahan berikut:

export GOOGLE_APPLICATION_CREDENTIALS=/path/to/json/key.json

Selepas mengesahkan bahawa kunci json adalah sah dan pembolehubah persekitaran ditetapkan dengan betul, anda sepatutnya boleh menjalankan aplikasi anda. Sebagai alternatif, anda boleh cuba memadamkan fail .env dan kemudian menggunakan kekunci json akaun perkhidmatan dan ia harus menjana semula token dan menjadikannya sah.

Penyelesaian masalah tambahandokumen a>untuk rujukan.

Atas ialah kandungan terperinci Mendapatkan "Permintaan mempunyai bukti kelayakan pengesahan yang tidak sah" apabila menggunakan fail kunci json akaun perkhidmatan dalam aplikasi 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