gmail integration in ios application

前端 未结 2 1480
渐次进展
渐次进展 2021-01-01 04:17

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

2条回答
  •  傲寒
    傲寒 (楼主)
    2021-01-01 05:20

    Finally i found the solution . . .i think this will help anybody else Follow 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];
    
        }
    }
    

提交回复
热议问题