Вход в Google Plus
Сценарий: Вход в приложение с помощью входа в Google+
Реализация:
- (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. Я получаю сообщение об ошибке.
Ошибка:
Полученная ошибка Ошибка Домен = com.google.GooglePlusPlatform Code = -1 "операция не может быть завершена. (ошибка com.google.HTTPStatus 400.)" UserInfo = 0x15d95f90 {NSLocalizedDescription = Операция не может быть завершено. (ошибка com.google.HTTPStatus 400.)} и объект auth (null)
Будет очень полезно, если кто-то поможет мне в решении этой проблемы.
Спасибо.
Ответы
Ответ 1
Укажите схему URL в проекте.
:
- Войдите в свою учетную запись разработчика
- выберите ваш проект
- выберите API и auth из боковой панели
- выберите "Учетные данные"
- скопируйте 'REDIRECT URIS' и 'BUNDLE ID'
- Проект Oen Xcode
- выберите цель проекта
- выберите "Информация"
- развернуть типы URL
- вставьте идентификатор "BUNDLE ID" в области идентификатора
- вставьте "REDIRECT URIS" в область URL-адресов.
Если он не работает, попробуйте заменить "REDIRECT URIS" на "ИДЕНТИФИКАТОР BUNDLE", т.е. Идентификатор и схемы URL одинаковы.
Надеюсь, это поможет вам.
Ответ 2
можете ли вы попытаться поместить свой код в эту функцию в делегат приложения
- (BOOL)application:(UIApplication *)application handleOpenURL:(NSURL *)url {
и прокомментируйте эту функцию и скажите мне результат
- (BOOL)application: (UIApplication *)application openURL: (NSURL *)url
sourceApplication: (NSString *) sourceApplication аннотация: (id) аннотация