我终于找到了解决方案。 . . .我认为这会有所帮助
按照以下步骤将 gmail 与您的应用程序集成。
1.为您的项目添加以下类。
GTMHTTPFetcher.h , GTMHTTPFetcher.m
GTMOAuth2Authentication.h, GTMOAuth2Authentication.m
GTMOAuth2SignIn.h,GTMOAuth2SignIn.m
GTMOAuth2ViewControllerTouch.h,GTMOAuth2ViewControllerTouch.m,
GTMOAuth2ViewTouch.xib
SBJSON.h , SBJSON.m
您将获得这些课程here : https://github.com/jonmountjoy/Force.com-iOS-oAuth-2.0-Example
注意:如果您在 ARC 环境下工作,则必须为以下文件禁用 ARC:
GTMHTTPFetcher.m , GTMOAuth2Authentication.m , GTMOAuth2SignIn.m, GTMOAuth2ViewControllerTouch.m
要在 Xcode 4 中对源文件禁用 ARC,请在 Xcode 中选择项目和目标。在目标“Build Phases”选项卡下,展开 Compile Sources 构建阶段,选择库源文件,然后按 Enter 打开编辑字段,然后键入 -fno-objc-arc 作为这些文件的编译器标志。
-
添加以下框架
security.framework、systemConfiguration.framework
-
将您的应用注册到 google api 控制台...。 here : https://code.google.com/apis/console
然后转到 ApiAccess 部分,为 iOS 应用创建客户端 ID。
然后您将获得 clientID、ClientSecret 和 RedirectUrl
现在是编码的时候了。 . . .在您的控制器中创建一个登录按钮并为其设置操作。在这里,当用户单击按钮时,会调用 SignInGoogleButtonClicked 方法
代码
#define GoogleAuthURL @"https://accounts.google.com/o/oauth2/auth"
#define GoogleTokenURL @"https://accounts.google.com/o/oauth2/token"
#define GoogleClientID @"paste your client id"
#define GoogleClientSecret @"paste your client secret"
-(void) SignInGoogleButtonClicked{
NSURL * tokenURL = [NSURL URLWithString:GoogleTokenURL];
NSString * redirectURI = @"urn:ietf:wg:oauth:2.0:oob";
GTMOAuth2Authentication * 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]
}
}