本文介绍了ios应用程序中的gmail集成的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在开发一个 ios 应用程序,最近我有一个新要求,即为用户提供使用 gmail 登录的选项.当用户点击登录按钮时,我想打开 gmail 登录屏幕,在用户输入他的凭据后,如果凭据正确,那么我希望控件导航到我的应用程序主页,而不是打开他的邮件.谁能告诉我如何实现这一目标

解决方案

终于找到了解决方案...我认为这对其他人有帮助按照以下步骤将 gmail 与您的应用程序集成.

1.为您的项目添加以下类.

GTMHTTPFetcher.h , GTMHTTPFetcher.m ,GTMOAuth2Authentication.h, GTMOAuth2Authentication.m,GTMOAuth2SignIn.h,GTMOAuth2SignIn.m,GTMOAuth2ViewControllerTouch.h,GTMOAuth2ViewControllerTouch.m,GTMOAuth2ViewTouch.xib,SBJSON.h , SBJSON.m

您将在此处获得这些课程:https://github.com/jonmountjoy/Force.com-iOS-oAuth-2.0-示例

注意:如果您在 ARC 环境下工作,则必须为以下文件禁用 ARC:
GTMHTTPFetcher.m , GTMOAuth2Authentication.m , GTMOAuth2SignIn.m, GTMOAuth2ViewControllerTouch.m

要在 Xcode 4 中对源文件禁用 ARC,请在 Xcode 中选择项目和目标.在目标Build Phases"选项卡下,展开 Compile Sources 构建阶段,选择库源文件,然后按 Enter 打开编辑字段,然后键入 -fno-objc-arc 作为这些文件的编译器标志.

2.添加以下框架

security.framework , systemConfiguration.framework

3.将您的应用注册到 google api 控制台……这里: https://code.google.com/apis/consolep>

然后转到 ApiAccess 部分,为 iOS 应用创建客户端 ID.然后你会得到clientID、ClientSecret和RedirectUrl

*4.现在是编码的时候了....*
在您的控制器中创建一个登录按钮并为其设置操作.在这里,当用户单击按钮时,会调用 SignInGoogleButtonClicked 方法.

//导入 GTMOAuth2Authentication , GTMOAuth2ViewControllerTouch#define GoogleClientID @"粘贴您的客户 ID"#define GoogleClientSecret @"粘贴您的客户端密码"#define GoogleAuthURL @"https://accounts.google.com/o/oauth2/auth"#define GoogleTokenURL @"https://accounts.google.com/o/oauth2/token"-(无效)SignInGoogleButtonClicked{NSURL * tokenURL = [NSURL URLWithString:GoogleTokenURL];NSString * redirectURI = @"urn:ietf:wg:oauth:2.0:oob";GTMOAuth2Authentication * 身份验证;auth = [GTMOAuth2Authentication authenticationWithServiceProvider:@"google"令牌网址:令牌网址重定向URI:重定向URI客户 ID:Google 客户 IDclientSecret:GoogleClientSecret];auth.scope = @"https://www.googleapis.com/auth/plus.me";GTMOAuth2ViewControllerTouch * viewcontroller = [[GTMOAuth2ViewControllerTouch alloc] initWithAuthentication:auth授权URL:[NSURL URLWithString:GoogleAuthURL]keychainItemName:@"GoogleKeychainName" 委托人:selffinishedSelector:@selector(viewController:finishedWithAuth:error:)];[self.navigationController pushViewController:viewcontroller Animation:YES];}//认证完成时调用此方法- (void)viewController:(GTMOAuth2ViewControllerTouch * )viewController finishedWithAuth:(GTMOAuth2Authentication * )auth error:(NSError * )error{如果(错误!= nil){UIAlertView * alert = [[UIAlertView alloc] initWithTitle:@"Error Authorizing with Google"消息:[错误本地化描述]代表:无取消按钮标题:@确定"其他按钮标题:无];[警报显示];}别的{UIAlertView * alert = [[UIAlertView alloc] initWithTitle:@"Alert !"消息:@成功"代表:无取消按钮标题:@确定"其他按钮标题:无];[警报显示];}}

I am working on an ios Application, recently I have got a new requirement for it i.e. to provide user a option to sign in with gmail . when user hit the sign in button then i want to open gmail login screen and after user enter his credentials , if the credentials are correct then instead of open his mail , i want the control to be navigate to my application home page . can anybody tell me how to achieve this

解决方案

Finally i found the solution . . .i think this will help anybody elseFollow the below steps to integrate gmail with your application .

1.Add following classes to you project .

GTMHTTPFetcher.h , GTMHTTPFetcher.m ,GTMOAuth2Authentication.h, GTMOAuth2Authentication.m,GTMOAuth2SignIn.h,GTMOAuth2SignIn.m,GTMOAuth2ViewControllerTouch.h,GTMOAuth2ViewControllerTouch.m,GTMOAuth2ViewTouch.xib,SBJSON.h , SBJSON.m

you will get these classes here : https://github.com/jonmountjoy/Force.com-iOS-oAuth-2.0-Example

Note : if you are working under ARC Environment then you have to disable the ARC for following files :
GTMHTTPFetcher.m , GTMOAuth2Authentication.m , GTMOAuth2SignIn.m, GTMOAuth2ViewControllerTouch.m

To disable ARC for source files in Xcode 4, select the project and the target in Xcode. Under the target "Build Phases" tab, expand the Compile Sources build phase, select the library source files, then press Enter to open an edit field, and type -fno-objc-arc as the compiler flag for those files.

2. add the following frameworks

security.framework , systemConfiguration.framework

3. Register your app to google api console …. here : https://code.google.com/apis/console

Then go to ApiAccess section , create client id for iOS app . then you will get clientID, ClientSecret and RedirectUrl

*4. Now it's time for coding . . . .*
create a signIn button in your controller and set the action for that . Here when the user click the button SignInGoogleButtonClicked method gets called .

//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];

    }
}

这篇关于ios应用程序中的gmail集成的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

07-25 19:30