我有一个用 PHP 为谷歌市场开发的应用程序。尽管用户在域上安装了该应用程序,但它运行良好,当来自谷歌默认导航按钮时,它仍然要求访问联系人、驱动器等的权限。
根据谷歌的说法,在域上安装应用程序时应该是自动的,并且不应该提示用户提供更多权限。使用新的 SDK 和 oauth 2.0 实现这一点的正确方法是什么?
最好的问候,若昂·加林
我有一个用 PHP 为谷歌市场开发的应用程序。尽管用户在域上安装了该应用程序,但它运行良好,当来自谷歌默认导航按钮时,它仍然要求访问联系人、驱动器等的权限。
根据谷歌的说法,在域上安装应用程序时应该是自动的,并且不应该提示用户提供更多权限。使用新的 SDK 和 oauth 2.0 实现这一点的正确方法是什么?
最好的问候,若昂·加林
看看这篇文章——Enterprice Google App 使用 Oauth2.0 进行 SSO(OpenId 到 Oauth2.0 迁移)
那个是面向 Python 的,但应该在 PHP 上使用类似的想法。
将您的所有范围都放在 admin sdk 中,当用户被重定向到您的网址“ http://www.example.com/?domain=somedomain.com ”时,只需将用户再次重定向到谷歌,仅使用 scope="email+profile", "include_granted_scopes=true" 使其包含您在 admin sdk 中定义的所有范围,并尽量避免请求中的https://www.googleapis.com/auth/plus.login范围,因为它会导致弹出确认访问权限每个用户的用户圈和它打破了无缝域范围的单点登录。
这是 vb.net 中的一个示例:
sub page_load
Dim loginUrl = "https://accounts.google.com/o/oauth2/auth?scope=" & _
"email+profile&" & _
"state=" & xState & "&" & _
"redirect_uri=" & GoogleApiCredentialHelper.RedirectUri & "&" & _
"response_type=code&" & _
"client_id=" & GoogleApiCredentialHelper.ClientId & "&" & _
"access_type=offline&" & _
"approval_prompt=auto&" & _
"include_granted_scopes=true"
response.redirect(loginUrl)
end sub