使用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,因此可能不能复制过去。
这虽然应该返回一个你可以使用的所有联系人的字典。