这个问题在过去几年变得更加困难由谷歌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并要求你确认你的权限。它应该是这样的:
重要的权限是前两名。如果你只有最低两位,你将只能访问你自己的个人资料,而不能访问你的朋友。
一旦你有这么多,你只需要执行正确的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到您的项目,这是我的项目的自定义功能,因此可能不会被复制过去的,能。
这虽然应该返回您可以使用的所有联系人的字典。
嘿..你有什么办法做到这一点..?我也在寻找解决方案。 – va05
我正在继续为此工作。我不认为它有一套Google API,因此我正在尝试对经过验证的Google网址进行手动AFNetworking请求。像这里的其中一个网址:https://developers.google.com/+/domains/api/circles/get#request如果您有任何突破,请发表评论或回复 –
如果您能够访问联系人,请让我知道到你的应用程序中我也有同样的要求在我目前的项目 – Dee