2014-11-05 4 views
14

Сценарий: Войти в App через Google+ ВходGoogle Plus Войти

реализации:

- (void)viewDidLoad { 
    [super viewDidLoad]; 

    GPPSignIn *aGPSSignIn = [GPPSignIn sharedInstance]; 
    aGPSSignIn.scopes = @[ kGTLAuthScopePlusLogin, kGTLAuthScopePlusUserinfoEmail, kGTLAuthScopePlusUserinfoProfile, kGTLAuthScopePlusMe]; 
    aGPSSignIn.shouldFetchGoogleUserEmail = YES; 
    aGPSSignIn.shouldFetchGooglePlusUser =YES; 
    aGPSSignIn.homeServerClientID = kClientID; 
    aGPSSignIn.clientID = kClientID; 
    aGPSSignIn.delegate = self; 
    if (![aGPSSignIn trySilentAuthentication]) { 
     [self showLoginButton]; 
    } 
} 

- (void)showLoginButton { 
    if (!self.signInButton) {   
     self.signInButton = [GPPSignInButton buttonWithType:UIButtonTypeCustom]; 
     [self.signInButton setFrame:CGRectMake(60, 100, 200, 40)]; 
    } 
    [self.view addSubview:self.signInButton]; 
} 

#pragma mark - GPPSignInDelegate 

- (void)finishedWithAuth: (GTMOAuth2Authentication *)auth error: (NSError *) error { 
    NSString *anAccessToken = auth.accessToken; 
    NSLog(@"googleAccessToken:%@",anAccessToken); 
} 

- (void)didDisconnectWithError:(NSError *)iError { 
    if (iError) { 
     NSLog(@"Error:%@", iError); 
    } 
} 

Примечание: - (BOOL)application: (UIApplication *)application openURL: (NSURL *)url sourceApplication:(NSString *)sourceApplication annotation: (id)annotation обрабатывается в AppDelegate.

Выпуск:

  • Войти Google+ отлично работает, когда пользователь нажимает на кнопку Google для входа в аккаунт и переходите к Safari. Действительный AccessToken получен в моем приложении.
  • Тем не менее, если приложение Google+ доступно на iPhone, пользователь переходит к Google+, но при входе в систему не получен AccessToken. Я получаю сообщение об ошибке.

Ошибка:

Received error Error Domain=com.google.GooglePlusPlatform Code=-1 "The operation couldn’t be completed. (com.google.HTTPStatus error 400.)" UserInfo=0x15d95f90 {NSLocalizedDescription=The operation couldn’t be completed. (com.google.HTTPStatus error 400.)} and auth object (null)

Это будет очень полезно, если кто-то может направить меня в решении этого вопроса. Спасибо.

+0

Вы положили свое приложение s в Google Developer Console? Это просто путь от WebView или Safari в Google+ API для запуска приложения. – khunshan

+0

Да, я сделал. Но все равно ошибка остается такой же. – Nishi

+0

@Nishi У вас есть решение? Я столкнулся с той же проблемой http://stackoverflow.com/questions/30160104/authentication-not-working-with-google-app – Tariq

ответ

3

Укажите схему URL-адреса в проекте.

шаги:

  • Login your developer account
  • выберите проект
  • выберите APIs & AUTH из боковой панели
  • выберите Учетные
  • скопировать 'REDIRECT Юрис' и 'Bundle ID'
  • Проект Oen Xcode
  • выберите целевой проект
  • выбор кнопкой 'Info'
  • расширить типы URL
  • вставить 'Bundle ID' в области Идентификатор
  • вставьте 'REDIRECT Юрис' в области URL Схемы

Если он не работает, заменив «REDIRECT URIS» на «BUNDLE ID», т. е. Идентификатор и схемы URL одинаковы.

Надеется, что это может помочь вам

+0

Я попытался заменить REDIRECT URIS 'на' BUNDLE ID ', к сожалению, он не работал. – Nishi

+0

Не работал с меня тоже – Tariq

0

вы можете попробовать поставить свой код в этой функции в приложении делегате

- (BOOL)application:(UIApplication *)application handleOpenURL:(NSURL *)url { 

и комментарии этой функции и сказать мне результат

- (BOOL)application: (UIApplication *)application openURL: (NSURL *)url 

sourceApplication : (NSString *) sourceApplication аннотация: (id) аннотация

+0

Когда я заменяю предыдущий метод приложением «- (BOOL): (UIApplication *) приложение openURL: (NSURL *) url», я получаю ответ на токен: «tokenResponse? E = The% 20operation% 20couldn % E2% 80% 99T% 20be% 20completed.% 20% 28com.google.HTTPStatus% 20error% 20400.% 29 & код =». – Nishi

Смежные вопросы