2013-05-30 47 views
1

我正在做一個應用程序,其中,當用戶單擊顯示gmail登錄頁面的按鈕時,我有一個名爲Login的按鈕,一旦用戶提供了他的憑據,而不是登錄到郵件主頁,它應該調用應用程序的註冊頁面,填充從用戶的gmail配置文件中提取的詳細信息。 (詳細信息如用戶名和姓氏,電子郵件等).... 搜索爲我提供了以下網站 「https://code.google.com/p/gtm-oauth/wiki/GTMOAuthIntroduction」 但我需要一個例子來了解Gmail整合究竟是如何工作的...提前 感謝Gmail集成在iOS中的示例

+0

你得到的答案。 –

回答

1

終於讓我找到了解決方案。 。 。 .i認爲這將有助於

按照以下步驟將gmail與您的應用程序集成。

1.爲您的項目添加以下類。

GTMHTTPFetcher.h , GTMHTTPFetcher.m 

GTMOAuth2Authentication.h, GTMOAuth2Authentication.m 

GTMOAuth2SignIn.h,GTMOAuth2SignIn.m 

GTMOAuth2ViewControllerTouch.h,GTMOAuth2ViewControllerTouch.m, 

GTMOAuth2ViewTouch.xib 

SBJSON.h , SBJSON.m 

你會得到這些類herehttps://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作爲這些文件的編譯器標誌。

  • 添加以下框架

    security.framework,systemConfiguration.framework

  • 註冊應用程式,以前往Google API控制檯...。 herehttps://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] 
    
        } 
    } 
    
    +0

    第二種方法,即 - (void)viewController:(GTMOAuth2ViewControllerTouch *)viewController finishedWithAuth:(GTMOAuth2Authentication *)認證錯誤:(NSError *)錯誤 不叫 – g212gs

    +0

    @ g212gs它會在認證完成後調用。 –

    +1

    錯誤域= com.google.GTMOAuth2代碼= -1001「無法完成操作(com.google.GTMOAuth2錯誤-1001。)」 – g212gs