0

私の C# アプリケーションでは、auth2 アクセスとリフレッシュ トークンを取得しようとしています。

https://developers.google.com/accounts/docs/OAuth2InstalledApp

フェーズで: Handling the Response、呼び出しを行うと、次のようなものが得られるはずです:

{
  "access_token":"1/fFAGRNJru1FTz70BzhT3Zg",
  "expires_in":3920,
  "token_type":"Bearer",
  "refresh_token":"1/xEoDL4iW3cxlI7yDbSRFYNG01kVKM2C-259HOF2aQbI"
}

しかし、私は得る

{
  "access_token":"1/fFAGRNJru1FTz70BzhT3Zg",
  "expires_in":3920,
  "token_type":"Bearer",
}

したがって、refresh_token がありません。私はデバッグし、API メソッドをヒットしたと確信しています: FetchAccessAndRefreshTokensが、refresh_token がありません。

PS: 201306 API を使用しています

何か案は?

4

1 に答える 1

1

API の OAuth2ProviderForApplications.cs ファイル内の GetAuthorizationUrl() メソッドの 100 行目で&approval_prompt=forceを文字列に追加すると、次のようになります。

return string.Format("{0}?scope={1}&state={2}&redirect_uri={3}&response_type={4}&" + "client_id={5}&access_type={6} &approval_prompt=force "

できます。しかし、これは恐ろしい回避策であり、Apache ライセンスの問題が発生する可能性があります。

発見方法: google oauth2 プレイグラウンド ( https://developers.google.com/oauthplayground/ ) では、このパラメーター (approval_prompt=force) が設定されており、省略した場合はリフレッシュ トークンが付与されません。

于 2013-08-27T13:03:32.553 に答える