Интеграция с gmail в приложении ios
Я работаю над приложением ios, недавно у меня появилось новое требование к нему, то есть предоставить пользователю возможность войти в систему с помощью gmail. когда пользователь нажимает кнопку входа, я хочу открыть экран входа в Gmail, и после того, как пользователь вводит свои учетные данные, если учетные данные верны, вместо того, чтобы открывать свою почту, я хочу, чтобы элемент управления переместился на домашнюю страницу моего приложения. кто-нибудь может сказать мне, как этого добиться
2 ответа
Наконец я нашел решение., Я думаю, что это поможет кому-либо еще. Выполните следующие действия, чтобы интегрировать gmail с вашим приложением.
1. Добавьте следующие классы к вашему проекту.
GTMHTTPFetcher.h, GTMHTTPFetcher.m, GTMOAuth2Authentication.h, GTMOAuth2Authentication.m, GTMOAuth2SignIn.h, GTMOAuth2SignIn.m, GTMOAuth2ViewControllerTouch.h, GTMOAuth2View.mh.JJAHTJBTHTMTHSONTSONTSONTSONTSONTSONTSONTSONTSONTSONTSONTSONTSONTSONTSONTSONTSONTSONTSONTSONTSONTSONTSONTSONTSONTSONTSONTSONTSONTSONTSONTHT
Вы получите эти классы здесь: https://github.com/jonmountjoy/Force.com-iOS-oAuth-2.0-Example
Примечание: если вы работаете в среде ARC, вам нужно отключить ARC для следующих файлов:
GTMHTTPFetcher.m, GTMOAuth2Authentication.m, GTMOAuth2SignIn.m, GTMOAuth2ViewControllerTouch.m
Чтобы отключить ARC для исходных файлов в Xcode 4, выберите проект и цель в Xcode. На целевой вкладке "Фазы сборки" разверните фазу сборки "Исходники компиляции", выберите исходные файлы библиотеки, затем нажмите Enter, чтобы открыть поле редактирования, и введите -fno-objc-arc в качестве флага компилятора для этих файлов.
2. добавить следующие рамки
security.framework , systemConfiguration.framework
3. Зарегистрируйте свое приложение в консоли Google API…. здесь: https://code.google.com/apis/console
Затем перейдите в раздел ApiAccess, создайте идентификатор клиента для приложения iOS. тогда вы получите clientID, ClientSecret и RedirectUrl
* 4. Теперь пришло время для кодирования. , , , *
создайте кнопку входа в вашем контроллере и установите для этого действие. Здесь, когда пользователь нажимает кнопку, вызывается метод SignInGoogleButtonClicked.
//import GTMOAuth2Authentication , GTMOAuth2ViewControllerTouch
#define GoogleClientID @"paster your client id"
#define GoogleClientSecret @"paste your client secret"
#define GoogleAuthURL @"https://accounts.google.com/o/oauth2/auth"
#define GoogleTokenURL @"https://accounts.google.com/o/oauth2/token"
-(void) SignInGoogleButtonClicked
{
NSURL * tokenURL = [NSURL URLWithString:GoogleTokenURL];
NSString * redirectURI = @"urn:ietf:wg:oauth:2.0:oob";
GTMOAuth2Authentication * auth;
auth = [GTMOAuth2Authentication authenticationWithServiceProvider:@"google"
tokenURL:tokenURL
redirectURI:redirectURI
clientID:GoogleClientID
clientSecret:GoogleClientSecret];
auth.scope = @"https://www.googleapis.com/auth/plus.me";
GTMOAuth2ViewControllerTouch * viewcontroller = [[GTMOAuth2ViewControllerTouch alloc] initWithAuthentication:auth
authorizationURL:[NSURL URLWithString:GoogleAuthURL]
keychainItemName:@"GoogleKeychainName" delegate:self
finishedSelector:@selector(viewController:finishedWithAuth:error:)];
[self.navigationController pushViewController:viewcontroller animated:YES];
}
//this method is called when authentication finished
- (void)viewController:(GTMOAuth2ViewControllerTouch * )viewController finishedWithAuth:(GTMOAuth2Authentication * )auth error:(NSError * )error
{
if (error != nil) {
UIAlertView * alert = [[UIAlertView alloc] initWithTitle:@"Error Authorizing with Google"
message:[error localizedDescription]
delegate:nil
cancelButtonTitle:@"OK"
otherButtonTitles:nil];
[alert show];
}
else
{
UIAlertView * alert = [[UIAlertView alloc] initWithTitle:@"Alert !"
message:@"success"
delegate:nil
cancelButtonTitle:@"OK"
otherButtonTitles:nil];
[alert show];
}
}
Я нашел это. но тогда я просто могу получить фрагмент, то есть первые несколько слов в теле письма, а не в целом. Я просто остановился, потому что я не нашел другого способа сделать это. потому что я использую OAuth 2.0 .