在iOS应用程序中从谷歌登录时获取用户详细信息

时间:2014-10-14 11:31:27

标签: ios

我在我的项目中使用谷歌登录我已成功登录但没有得到用户详细信息。 我使用了这个链接的代码 https://developers.google.com/+/mobile/ios/sign-in 从中获取值 https://developers.google.com/+/mobile/ios/people

此代码用于登录并获取用户电子邮件ID和圈子人员:

 [GPPSignIn sharedInstance].clientID = kClientId;
//[GPPSignIn sharedInstance].scopes= [NSArray arrayWithObjects:kGTLAuthScopePlusLogin, nil];
[GPPSignIn sharedInstance].shouldFetchGoogleUserID=YES;
[GPPSignIn sharedInstance].shouldFetchGoogleUserEmail=YES;
[GPPSignIn sharedInstance].delegate=self;

[[GPPSignIn sharedInstance] authenticate];

GTLServicePlus* plusService = [[GTLServicePlus alloc] init];
plusService.retryEnabled = YES;

// [plusService setAuthorizer:[GPPSignIn sharedInstance] .authentication];

GTLQueryPlus *query =
[GTLQueryPlus queryForPeopleListWithUserId:@"me"
                                collection:kGTLPlusCollectionVisible];
[plusService executeQuery:query
        completionHandler:^(GTLServiceTicket *ticket,
                            GTLPlusPeopleFeed *peopleFeed,
                            NSError *error) {
            if (error) {
                GTMLoggerError(@"Error: %@", error);
            } else {
                // Get an array of people from GTLPlusPeopleFeed
                NSArray* peopleList = peopleFeed.items ;
                NSLog(@"People list =%@",peopleList);
            }
        }];

NSLog(@" email =%@",signIn .authentication.userEmail); }

但在控制台中出现这些错误

BarberBlue [3611 / 0x1051a7310] [lvl = 3] __27- [LoginVC loginWithgoogle:] _ block_invoke()错误:错误Domain = com.google.GTLJSONRPCErrorDomain Code = 403"操作无法完成。 (超出未经验证的使用的每日限制。继续使用需要注册。)" UserInfo = 0x10c91cf90 {error =超出未经身份验证的使用的每日限制。继续使用需要注册。,NSLocalizedFailureReason =(超出未经验证的使用的每日限制。继续使用需要注册。),GTLStructuredError = GTLErrorObject 0x10c91e490:{message:"超出未经验证的使用的每日限制。继续使用需要注册。"数据:[1]代码:403} }

2 个答案:

答案 0 :(得分:2)

GTLServicePlus* plusService = [[GTLServicePlus alloc] init];
[plusService setAuthorizer:[GPPSignIn sharedInstance].authentication];
plusService.retryEnabled = YES;
GTLQueryPlus *query = [GTLQueryPlus queryForPeopleGetWithUserId:@"me"];

[plusService executeQuery:query
        completionHandler:^(GTLServiceTicket *ticket,
                            GTLPlusPerson *person,
                            NSError *error) {
            if (error) {
                GTMLoggerError(@"Error: %@", error);
            } else {
                NSString *description = [NSString stringWithFormat:
                                         @"%@\n%@", person.displayName,
                                         person.name];
                NSLog(@"User Detail : %@" ,description);
            }
        }];
  

我也面临同样的问题,这个方法解决了这个问题。使用上面的代码,您将获得用户详细信息。

答案 1 :(得分:1)

要获取用户详细信息,请执行以下操作:

GTLPlusPerson *person = [GPPSignIn sharedInstance].googlePlusUser;
    if (person == nil) {
        return;
    }

    NSLog(@"Person : %@" ,person);