我是iOS开发/ Objective C的新手,所以请保持温和; - )
我正在创建一个使用Google+登录SDK的应用程序,我有一个工作原型,用户点按谷歌登录按钮,然后他们被重定向到safari,他们登录到他们的谷歌帐户,并且在返回iOS应用程序之前,最终会显示我的应用程序的“帐户权限”屏幕。
我遇到的问题是,在允许应用访问相关信息后,当通过Google登录登录应用时,用户会不断导航到“帐户权限”屏幕。
现在,我的印象是,一旦用户允许该应用访问相关信息,用户就不会被要求批准此项,除非他们已通过security.google.com撤消访问权限但我发现每次登录尝试后我都必须批准权限。
以前有人有这个问题吗?我已经进行了一些谷歌搜索,以寻找这个问题的答案,但没有多少运气。任何帮助将不胜感激!
感谢。
以下代码:
- (void)viewDidLoad {
[super viewDidLoad];
GPPSignIn *signIn = [GPPSignIn sharedInstance];
signIn.shouldFetchGooglePlusUser = YES; // get the user profile
signIn.shouldFetchGoogleUserEmail = YES; // get the user's email
signIn.scopes = @[ @"profile" ]; // "profile" scope
// Optional: declare signIn.actions, see "app activities"
signIn.delegate = self;
[signIn trySilentAuthentication];
}
- (void)finishedWithAuth:(GTMOAuth2Authentication *)auth error:(NSError *)error {
GTLQueryPlus *query = [GTLQueryPlus queryForPeopleGetWithUserId:@"me"];
// 1. Create a |GTLServicePlus| instance to send a request to Google+.
GTLServicePlus* plusService = [[GTLServicePlus alloc] init] ;
plusService.retryEnabled = YES;
// 2. Set a valid |GTMOAuth2Authentication| object as the authorizer.
[plusService setAuthorizer:[GPPSignIn sharedInstance].authentication];
// 3. Use the "v1" version of the Google+ API.*
plusService.apiVersion = @"v1";
[plusService executeQuery:query
completionHandler:^(GTLServiceTicket *ticket,
GTLPlusPerson *person,
NSError *error)
{
if (error) {
NSLog(@"Received Error %@ and auth object==%@", error, auth);
}
else {
// Send the basic user information to the console
NSLog(@"Email=%@", [GPPSignIn sharedInstance].authentication.userEmail);
NSLog(@"User Name=%@", [person.name.givenName stringByAppendingFormat:@" %@", person.name.familyName]);
[self performSegueWithIdentifier:@"loginSuccessful" sender:self]; // Once logged in send user to main view
}
答案 0 :(得分:0)
我认为您正在寻找trySilentAuthentication
,这是Google登录SDK的一部分。您可以在此处找到使用者:http://developers.google.com/+/mobile/ios/sign-in