Ich bin in der Lage der oauth Verfahren zu durchlaufen, ein Token zu erhalten, die ich in der Lage bin erfolgreich mit GDrive zu interagieren können. Das Token verfügt über ein AccessToken aber kein RefreshToken. Wie bekomme ich ein RefreshToken? DieseGolang Google Drive OAuth2 Rückkehr Nicht Refresh Token
ist in einem Web-Service. Hier ist der Code, der die oauth Genehmigungsverfahren einleitet:
// 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)
Hier ist der relevante Code, der aufgerufen wird, wenn/gdrivecb genannt wird (OAuthConfig ist das gleiche wie zuvor, Code ist die code
URL-Parameter:
token, err = oauthconfig.Exchange(nil, code)
Dieses Token enthält ein AccessToken, aber kein RefreshToken, und es funktioniert für eine Stunde (die Länge von Expiry), aber funktioniert danach nicht mehr
Wenn ein Code abgerufen wird, '' access_type = offline'' benötigt wird, um zum Abrufen des Code in der URL enthalten sein. Die URL für den Code abzurufen ist '' https: //accounts.google.com/o/oauth2/v2/auth response_type = code & client_id = ### & redirect_uri = ### I & scope = ### & access_type = offline'' Die Detailinformationen sind https://developers.google.com/identity/protocols/OAuth2WebServer – Tanaike
die AuthCodeURL() Funktion mit oauth2.AccessTypeOffline fügt ‚access_type = offline‘ an die Umleitungs-URL, so dass bereits passiert. –
Es tut mir leid, ich konnte nicht helfen. – Tanaike