后端的iPhone Google+登录和OAuth2

时间:2014-01-17 14:31:55

标签: ios iphone google-plus google-oauth

在此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+登录流程。

有什么想法吗?

4 个答案:

答案 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)