我尝试使用google实现openID登录,然后获取访问令牌以访问google apis(例如google plus或驱动器)
第一次尝试是成功但有一个大问题:
用户需要识别两次。那不好。
我阅读并试用了google hybrid openId and oAuth。所有链接都指向不推荐使用的oAuth1接口,我无法使其工作,我得到用户标识,但没有request_token继续oAuth的东西。
所以我有几个问题:
我需要openId和oAuth beacouse应用程序需要在google marketplace中,并且必须使用openId登录用户,我需要点击一些需要oAuth2 access_token的API。
谢谢!
答案 0 :(得分:0)
为什么你需要同时处理OpenID和OAuth,并且有两个登录屏幕? 如果您只是使用OAuth 2.0工作流程,则用户只需输入一次凭据,您就可以执行任何操作。
一旦用户同意OAuth工作流程中的登录/权限屏幕,您的应用就会获得访问令牌。如果您需要任何客户信息,例如欢迎用户屏幕 - 您只需要使用访问令牌点击https://www.googleapis.com/oauth2/v1/userinfo端点,它将为您提供用户的公共信息。因此,简而言之,您可以使用OAuth流程完成大部分工作,并且用户只需登录一次。
祝你好运!随意提出更多问题。答案 1 :(得分:0)
好的,最后我有一个有效的解决方案,这就是为我制作技巧的“神奇”网址:
String url = "https://accounts.google.com/o/oauth2/auth?"
+ "client_id="+ GoogleapiAuthHelper.CLIENT_ID +"&"
+ "response_type=code&"
+ "scope=openid%20profile%20https://www.googleapis.com/auth/plus.me&"
+ "redirect_uri="+GoogleapiAuthHelper.REDIRECT_URI+ "&"
+ "state=security_token%3Dasdalskjqwo91231029";
if( userService.getCurrentUser() != null ){
url += "&login_hint=" + userService.getCurrentUser().getEmail();
}
步骤:
在阅读了所有Google Plus API,Google Drive API,oAuth2和openId文档后,指向我的方向的文档是https://developers.google.com/accounts/docs/OAuth2Login?hl=es
我不知道这是否是实现openId + oAuth的最佳方式,但它有效并且我无法以任何其他方式工作。希望这可以帮助别人。