oauth手順を実行して、GDriveとやりとりするために正常に使用できるトークンを取得できました。トークンにはAccessTokenがありますが、RefreshTokenはありません。 RefreshTokenはどのように入手できますか?Golang GoogleドライブOauth2がリフレッシュトークンを返さない
これはWebサービス内にあります。ここでのOAuth認証手順を開始するコードは次のとおりです。
token, err = oauthconfig.Exchange(nil, code)
:
// Set up a configuration.
oauthconfig := &oauth2.Config{
ClientID: XXX,
ClientSecret: XXX,
RedirectURL: "https://MYDOMAIN/gdrivecb",
Scopes: []string{"https://www.googleapis.com/auth/userinfo.profile", "https://www.googleapis.com/auth/drive"},
Endpoint: oauth2.Endpoint{
AuthURL: "https://accounts.google.com/o/oauth2/auth",
TokenURL: "https://accounts.google.com/o/oauth2/token",
},
}
url := oauthconfig.AuthCodeURL(MYSCOPEDATA, oauth2.AccessTypeOffline)
http.Redirect(w, r, url, http.StatusFound)
ここで/ gdrivecbは(oauthconfigコードがcode
URLパラメータで、前と同じであるが呼び出されたときに呼ばれています関連するコードですこのトークンにはAccessTokenが含まれていますが、RefreshTokenは含まれていません。また、1時間(有効期限の長さ)動作しますが、その後は動作しなくなります。
コードを取得する場合、コードを取得するためにURLに '' access_type = offline''を含める必要があります。コードを取得するためのURLは '' https://accounts.google.com/o/oauth2/v2/auth?response_type = code&client_id = ###&redirect_uri = ### I&scope = ###&access_type = offline''です。詳細情報はhttps://developers.google.com/identity/protocols/OAuth2WebServer – Tanaike
oauth2.AccessTypeOfflineを指定したAuthCodeURL()関数は、 'access_type = offline'をリダイレクトURLに追加しています。 –
すみません、ごめんなさい。 – Tanaike