4

私はiosアプリケーションに取り組んでいます.最近、ユーザーに gmail でサインインするオプションを提供するという新しい要件があります。ユーザーがサインインボタンを押したときに、Gmailログイン画面を開き、ユーザーが資格情報を入力した後、資格情報が正しい場合は、メールを開く代わりに、コントロールをアプリケーションのホームページに移動させたい. 誰でもこれを達成する方法を教えてもらえますか

4

2 に答える 2

2

最後に私は解決策を見つけました。. .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

ここでこれらのクラスを取得します: 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 と入力します。

2. 以下のフレームワークを追加します

security.framework , systemConfiguration.framework

3. アプリを Google API コンソールに登録します …. ここ: https://code.google.com/apis/console

次に、ApiAccess セクションに移動し、iOS アプリのクライアント ID を作成します。次に、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];

    }
}
于 2013-08-27T09:58:34.470 に答える
0

見つけた。しかし、その後、スニペット、つまり電子メール本文の最初の数語だけを取得でき、全体ではありません。他に方法が見つからなかったので、やめました。OAuth 2.0 を使用しているためです。

于 2015-05-24T09:13:34.937 に答える