Scenariusz: Zaloguj się do aplikacji za pośrednictwem Google+ logowaniaGoogle Plus Logowanie
Realizacja:
- (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);
}
}
Uwaga: - (BOOL)application: (UIApplication *)application openURL: (NSURL *)url sourceApplication:(NSString *)sourceApplication annotation: (id)annotation
jest obsługiwana w AppDelegate.
Problem:
- Google+ logowanie działa perfekcyjnie, gdy użytkownik kliknie na przycisk Google signin i nawigować do Safari. Prawidłowy znacznik AccessToken jest odbierany w mojej aplikacji.
- Jeśli jednak aplikacja Google+ jest dostępna na iPhonie, użytkownik jest kierowany do aplikacji Google+, ale po otrzymaniu hasła Login no AccessToken. Otrzymuję błąd.
Błąd:
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)
Będzie to bardzo pomocne, jeśli ktoś może kierować mi w rozwiązaniu tego problemu. Dzięki.
Czy umieściłeś swoją aplikację s identyfikator pakietu w Google Developer Console? To jedyny sposób, od WebView lub Safari w interfejsie API Google+ do uruchamiania aplikacji. – khunshan
Tak, zrobiłem. Ale nadal błąd pozostaje ten sam. – Nishi
@Nishi Masz jakieś rozwiązanie? Mam do czynienia z samym problemem http://stackoverflow.com/questions/30160104/authentication-not-working-with-google-app – Tariq