2016-05-16 37 views
4

我已将Google登录信息添加到使用Firebase登录社交媒体的应用程序中。我现在试图访问Google用户的朋友。我想返回一个朋友/联系人列表,以便我可以搜索他们是否正在使用该应用程序。使用iOS上的API获取Google联系人

到目前为止,我已经找到了非常少的信息。

有许多的这是没有答案,询问类似的thing计算器的问题。

Google API已从Google+登录更新为Google Signin API,这意味着虽然之前我们可以找到共享code,但他们的信息更少available

这意味着,一些answers似乎有可能由现在贬值。

也有一些answers是说,这是不可能做到这一点。

我的问题是,去年似乎没有任何答案或问题,并且刚刚在一年前新的GoogleSignIn仅为released

我想知道是否可以检索用户的朋友或联系人列表,以任何方式,形状或用GIDGoogleUser对象登录时形成。理想情况下,我会返回一些关于他们的信息,但即使只是他们的名字,这也足够了。

Facebook API允许用户返回登录到应用但不是所有用户的用户的详细信息。是否有类似的东西我缺少谷歌或目前没有办法,使用官方的API来做到这一点。

任何关于这是否可能的帮助都会对我计划下一步的应用很有帮助。

+0

嘿..你有什么办法做到这一点..?我也在寻找解决方案。 – va05

+0

我正在继续为此工作。我不认为它有一套Google API,因此我正在尝试对经过验证的Google网址进行手动AFNetworking请求。像这里的其中一个网址:https://developers.google.com/+/domains/api/circles/get#request如果您有任何突破,请发表评论或回复 –

+0

如果您能够访问联系人,请让我知道到你的应用程序中我也有同样的要求在我目前的项目 – Dee

回答

5

这个问题在过去几年变得更加困难由谷歌API版本的数量,以及如何很少的用户确实与其谷歌详情登录。这意味着由于缺乏需求而几乎没有文件。我终于设法通过App Code的this伟大的快速教程帮助它工作。本教程很少见,因为它会逐步完成整个登录过程,并涵盖了我之后的联系方式。

我会建议通过本教程开始完成,但我也会在这里提出一些最重要的信息。

做的第一件事是确定您已经正确添加您的应用程序的谷歌控制台。确保添加Google+ API并获取您的客户ID。

其次,您需要设置您的Google登录。这非常容易,并且有一些很好的资源可用于设置。我会推荐this谷歌youtube视频,但有很多其他资源在线。我不会详细讨论,因为这不是问题的关键。

接下来,您需要设置您的登录代码。

确保您已经添加既代表你的viewController

<GIDSignInDelegate, GIDSignInUIDelegate 

,并在viewDidLoad中配置的:

[GIDSignIn sharedInstance].delegate = self; 
[GIDSignIn sharedInstance].uiDelegate = self; 
[GIDSignIn sharedInstance].clientID = @"123456789012-thisismadeup123456789.apps.googleusercontent.com"; 

[[GIDSignIn sharedInstance] setScopes:@[@"https://www.googleapis.com/auth/plus.login", @"https://www.googleapis.com/auth/plus.me"]]; 

我在别处找到了问题的答案都没有我的设置我的clientID的(从谷歌控制台),但重要的部分是添加范围代码,没有这你没有得到正确的权限来获取联系人。

在这个阶段,你可以检查一切是否设置正确。加载你的应用程序并点击Google登录按钮,它应该加载webview并要求你确认你的权限。它应该是这样的:

enter image description here

重要的权限是前两名。如果你只有最低两位,你将只能访问你自己的个人资料,而不能访问你的朋友。

一旦你有这么多,你只需要执行正确的API调用返回你的朋友。说起来容易,而不是在不同的Google网站上使用不同的纯数字。我完成了我的以下各项:

NSString * urlString = [NSString stringWithFormat:@"https://www.googleapis.com/plus/v1/people/me/people/visible?access_token=%@", [GIDSignIn sharedInstance].currentUser.authentication.accessToken]; 

AFHTTPRequestOperationManager * manager = [AFHTTPRequestOperationManager manager]; 

AFJSONResponseSerializer *responseSerializer = [AFJSONResponseSerializer serializerWithReadingOptions:NSJSONReadingAllowFragments]; 
manager.responseSerializer = responseSerializer; 

[manager GET:path parameters:params success:^(AFHTTPRequestOperation * operation, id responseObject) { 

    if (![responseObject isEqual: [NSNull null]]) { 

     if(responseObject[@"error"]) { 
      NSError * error = [NSError errorWithDomain:@"" code:0 userInfo:@{NSLocalizedDescriptionKey: responseObject[@"error"]}]; 
     } 
     else { 
      // We now have our response object 
     } 
    } 
    else { 
     // response is nil 
    } 
} failure:^(AFHTTPRequestOperation *operation, NSError *error) { 
    // Failure 
}]; 

您将需要添加AFNetworking到您的项目,这是我的项目的自定义功能,因此可能不会被复制过去的,能。

这虽然应该返回您可以使用的所有联系人的字典。

+0

非常好的详细的问题和答案。它为我工作,但它是给我的圈子添加谷歌+联系人。任何方式我们可以得到所有的Gmail联系人? – Haris

相关问题