Google OAuth始终获得同意屏幕

时间:2015-01-22 03:04:40

标签: c# oauth google-oauth

我正在C#中开发与Google OAuth的集成。

我之前使用access_type = offline来获取刷新令牌。我将令牌存储在cookie中,稍后使用它来获取新的访问令牌。这是完美的,唯一的问题来自我关闭我的谷歌帐户会话;因为我仍然有刷新令牌,我仍然可以访问谷歌信息。我希望用户无法访问任何Google信息,因为会话不再有效。我需要用户再次进行身份验证。

我认为可能access_type = online更好,因为我只需要从谷歌那里获取用户的电子邮件,而且这些都与我自己的系统有关。

我现在遇到的问题是Google一直向用户显示审批同意屏幕。即使我使用access_type = online和approval_prompt = auto。我不知道为什么会发生这种情况,因为当我在这里查看时:https://security.google.com/settings/security/permissions?pli=1我可以看到我的系统已经被批准了。谷歌为什么要再次申请权限?由于之前的问题,我不想使用刷新令牌。

这就是我提出请求的方式:

StringBuilder sb = new StringBuilder();
sb.Append("https://accounts.google.com/o/oauth2/auth");
sb.Append(string.Format("?response_type={0}","code"));
sb.Append(string.Format("&access_type={0}", "online"));
sb.Append(string.Format("&approval_prompt={0}", "auto"));
sb.Append(string.Format("&client_id={0}", "client" ));
sb.Append(string.Format("&redirect_uri={0}", "redirectURL"));
sb.Append(string.Format("&scope={0}", "email"));
WebRequest request = WebRequest.Create(sb.ToString());

我收到了响应代码,然后我要求提供授权码。这很完美。当我关闭标签并再次打开时,Google会要求获得批准同意书。

我该如何避免这种情况?

0 个答案:

没有答案