使用iOS上的API获取Google通讯录

我已将Googlelogin信息添加到使用Firebaselogin社交媒体的应用程序中。 我正在尝试访问Google用户的朋友。 我想返回一个朋友/联系人的列表,以便我可以search,看看他们目前正在使用的应用程序。

到目前为止,我已经find了很less的信息。

有一些stackoverflow的问题是没有回答问一个类似的事情 。

Google API已经从Google+login更新为Google Signin API,这意味着虽然之前我们可以find共享代码,但是他们的信息却非常less。

这意味着一些答案似乎现在可能会被贬低。

也有一些答案说,这是不可能的。

我的问题是,在去年似乎没有任何答案或问题,新的GoogleSignIn仅在一年前发布。

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

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

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

这个问题在过去几年里Google API版本的数量变得更加困难,用户实际loginGoogle的细节的情况也很less。 这意味着由于缺乏需求而几乎没有文件。 我终于设法得到它与App Code 这个伟大的快速教程的帮助。 本教程是很less见的,因为它贯穿整个login过程一步一步,以及覆盖接触查找,我以后是我。

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

首先要做的是确保您在这里将您的应用程序正确添加到Google控制台。 确保添加Google+ API并获取您的客户ID。

其次,您需要设置您的Googlelogin。这非常简单,并且有一些很好的资源可供您设置。 我会推荐这个谷歌youtubevideo,但也有很多其他资源在线。 我不会详细讨论,因为这不是问题的关键。

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

确保你已经将这两个委托添加到你的viewController

<GIDSignInDelegate, GIDSignInUIDelegate 

并在viewDidLoad中configuration它:

 [GIDSignIn sharedInstance].delegate = self; [GIDSignIn sharedInstance].uiDelegate = self; [GIDSignIn sharedInstance].clientID = @"123456789012-thisismadeup12345678901234567890.apps.googleusercontent.com"; [[GIDSignIn sharedInstance] setScopes:@[@"https://www.googleapis.com/auth/plus.login", @"https://www.googleapis.com/auth/plus.me"]]; 

我在其他地方find的答案都没有设置我的clientID(从谷歌控制台),但重要的部分是添加范围代码,没有这个你没有得到正确的权限来获取联系人。

在这个阶段你可以检查一切是否设置正确。 加载您的应用程序,然后单击Googleloginbutton,它应该加载webview并要求您确认您的权限。 它应该是这样的:

在这里输入图像说明

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

一旦你有这么多,你只需要执行正确的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到您的项目,这是我的项目的自定义function,因此可能不能复制过去。

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