在此link中查看使用Google+ SDK for iOS的教程,我可以配置项目并授予我的应用程序以获取访问令牌。但是,我不想在设备中使用令牌来获取其名称,电子邮件等。我想获取临时访问代码(可以更改为OAuth2令牌)或id令牌,就像我在Android中一样应用。这是由谷歌cross-client identity调用的。
这个想法是后端服务器将收到此交换代码,并将生成访问令牌以获取用户配置文件,电子邮件等。然后,用户注册了此信息。但是,iOS应用程序生成的访问令牌只能由应用程序本身使用,因为使用的应用程序ID是iOS应用程序的ID。我尝试使用服务器应用程序ID更改应用程序ID,但随后会抛出redirect_uri_mismatch。
尝试直接在服务器中使用访问令牌会引发Google_OAuth_Exception,因为服务器客户端ID不等于应用程序客户端ID。
我还有另一种基于打开网页的方法,但我想使用原生的Google+登录流程。
有什么想法吗?
答案 0 :(得分:3)
我们正在研究此功能。这将允许应用程序获取可以发送到服务器以存储脱机访问的“代码”。
对不起,您将需要等待几周(抱歉没有确切的日期)。
答案 1 :(得分:2)
Naveen的回答是正确的,但如果您只需要基本的个人资料信息和电子邮件地址,则可以使用id令牌。这将包括电子邮件地址(只要您请求电子邮件范围),以及可用于从Google+ API查询公开个人资料信息的用户ID,而无需传递代码或访问令牌。检索ID令牌非常简单
[GPPSignIn sharedInstance] setHomeServerClientID:@"911581857976.apps.googleusercontent.com"];
- (void) finishedWithAuth:(GTMOAuth2Authentication *)auth error:(NSError *)error {
if (error) {
NSLog(@"Error: %@", error);
return;
}
NSLog(@"ID Token: %@", [[GPPSignIn sharedInstance] idToken]);
}
我在一段时间的博客文章中写了一个更长的例子,这可能有所帮助:http://www.riskcompletefailure.com/2013/11/client-server-authentication-with-id.html
答案 2 :(得分:1)
快速回答可能是在云端控制台中配置其他重定向网址。
答案 3 :(得分:0)