Google OAuth2 请求 "offline access"
Google OAuth2 asking for "offline access"
我正在使用 Microsoft.Owin.Security.Google
(版本 3.0.1
)中间件为我的应用程序提供 Google OAuth。
配置如下:
app.UseGoogleAuthentication(new GoogleOAuth2AuthenticationOptions
{
AuthenticationType = "Google",
Caption = "Google",
SignInAsAuthenticationType = signInAsType, // "idsrv.external"
ClientId = "xxx.apps.googleusercontent.com",
ClientSecret = "xxx"
});
非常简单的东西。我使用 IdentityServer 作为发出索赔的 MW。
当我第一次使用 Google 对用户进行身份验证时,Google 要求用户同意以下内容:
这完全有道理,因为我在 URL:
中请求 openid profile email
范围
https://accounts.google.com/o/oauth2/auth?scope=openid profile email&response_type=code&redirect_uri=https://localhost:44301/core/signin-google&state=xxx&client_id=111.apps.googleusercontent.com&hl=en-GB&from_login=1&as=-25fb4219b2997893&authuser=0
然后我接受了,一切正常。
现在,在我注销后,然后再次重新验证 - 从现在开始 Google 一直要求我 "offline access":
我没有要求离线访问范围,很困惑为什么 Google 要求这个?
确认 URL 看起来不错:
https://accounts.google.com/o/oauth2/auth?scope=openid profile email&response_type=code&redirect_uri=https://localhost:44301/core/signin-google&state=xxx&client_id=111.apps.googleusercontent.com&hl=en-GB&from_login=1&as=676f55265a78c036&authuser=0
与第一个请求完全相同URL。
我试过:
- 在 API 控制台中打开 Google+ API
- 尝试添加
&prompt=auto
(导致错误 "Invalid parameter value for prompt: Invalid prompt: auto")
- 尝试添加
access_type=online
(如果未提供,即使这是默认设置)。
- 尝试添加
approval_prompt=auto
None 这些技术奏效了。
有什么想法吗?
似乎是本地主机问题。一旦部署到服务器,工作正常:/
offline_access 范围值请求 OAuth 2.0 刷新令牌。
如果您不要求这样做,那么这听起来像是 OWIN Google 组件或 Google API.
中内置的东西
您可以在此处阅读有关离线访问范围的更多信息:http://openid.net/specs/openid-connect-core-1_0.html#OfflineAccess
我正在使用 Microsoft.Owin.Security.Google
(版本 3.0.1
)中间件为我的应用程序提供 Google OAuth。
配置如下:
app.UseGoogleAuthentication(new GoogleOAuth2AuthenticationOptions
{
AuthenticationType = "Google",
Caption = "Google",
SignInAsAuthenticationType = signInAsType, // "idsrv.external"
ClientId = "xxx.apps.googleusercontent.com",
ClientSecret = "xxx"
});
非常简单的东西。我使用 IdentityServer 作为发出索赔的 MW。
当我第一次使用 Google 对用户进行身份验证时,Google 要求用户同意以下内容:
这完全有道理,因为我在 URL:
中请求openid profile email
范围
https://accounts.google.com/o/oauth2/auth?scope=openid profile email&response_type=code&redirect_uri=https://localhost:44301/core/signin-google&state=xxx&client_id=111.apps.googleusercontent.com&hl=en-GB&from_login=1&as=-25fb4219b2997893&authuser=0
然后我接受了,一切正常。
现在,在我注销后,然后再次重新验证 - 从现在开始 Google 一直要求我 "offline access":
我没有要求离线访问范围,很困惑为什么 Google 要求这个?
确认 URL 看起来不错:
https://accounts.google.com/o/oauth2/auth?scope=openid profile email&response_type=code&redirect_uri=https://localhost:44301/core/signin-google&state=xxx&client_id=111.apps.googleusercontent.com&hl=en-GB&from_login=1&as=676f55265a78c036&authuser=0
与第一个请求完全相同URL。
我试过:
- 在 API 控制台中打开 Google+ API
- 尝试添加
&prompt=auto
(导致错误 "Invalid parameter value for prompt: Invalid prompt: auto") - 尝试添加
access_type=online
(如果未提供,即使这是默认设置)。 - 尝试添加
approval_prompt=auto
None 这些技术奏效了。
有什么想法吗?
似乎是本地主机问题。一旦部署到服务器,工作正常:/
offline_access 范围值请求 OAuth 2.0 刷新令牌。
如果您不要求这样做,那么这听起来像是 OWIN Google 组件或 Google API.
中内置的东西您可以在此处阅读有关离线访问范围的更多信息:http://openid.net/specs/openid-connect-core-1_0.html#OfflineAccess