Google+ Platform for iOSを使ってログインをしてみる。
まずは、Start integrating Google+ into your iOS appからSDKをダウンロード
で、使うには、下記のネイティブライブラリをあらかじめインポートしておく必要がある。
AddressBook.framework AssetsLibrary.framework Foundation.framework CoreLocation.framework CoreMotion.framework CoreGraphics.framework CoreText.framework MediaPlayer.framework Security.framework SystemConfiguration.framework UIKit.frameworkインポート完了後、さらに下のライブラリをインポートする必要がある。
GooglePlus.framework GoogleOpenSource.frameworkGoogle側が用意してくれているGoogle+ Sign-Inボタンを使いたい場合は、GooglePlus.bundleが必要だが、今回は、使わない。
Google Developers Consoleページのプロジェクトで左側にある「APIと認証」で「Google+ API」を有効にする。
有効になったら、今度は、「APIと認証」の直下にある「認証情報」画面で「新しいクライアントIDを作成」をクリックして「インストールされているアプリケーション」を選択してiOSにチェックを入れる。
Xcodeに記載されているバンドルIDとApp Store IDを入力後、ディープリンクを有効にして最後に「クライアントIDを作成」をクリックする。
Xcodeに戻ってターゲットのビルドセッティングのOther Linker Flagsに「-ObjC」を追加する。
Xcodeの「Info」タブの「URL type」の「identifier」と「URL schemes」にバンドルIDを設定する。
ログイン処理を行うプログラム(ここでは、UIViewControllerを継承しているプログラム)に下のようにGooglePlus.hのインポートとdelegateを設定する。
#import <GooglePlus/GooglePlus.h> #import <GoogleOpenSource/GoogleOpenSource.h> @interface ThisisSignInGooglePlusViewController : UIViewController <GPPSignInDelegate>viewDidLoadメソッドで以下のように記述を行う
- (void)viewDidLoad {
[super viewDidLoad];
GPPSignIn *signIn = [GPPSignIn sharedInstance];
signIn.shouldFetchGooglePlusUser = YES;
signIn.shouldFetchGoogleUserID = YES;
//kClientIdは、Google Developers Consoleページで作ったクライアントID
signIn.clientID = kClientId;
signIn.scopes = @[@"profile"];
signIn.delegate = self;
}Google+ Sign-In for iOSを読むと、signIn.shouldFetchGoogleUserID = YES;
がないのだが、これがないとidが取得できなかった。
GPPSignInDelegateの処理として以下のメソッドを実行する。
- (void)finishedWithAuth: (GTMOAuth2Authentication *)auth
error: (NSError *) error {
//errorがある場合、ない場合は、nilを返す
if(error){
return
}
}delegateファイルに#import <GooglePlus/GooglePlus.h>を設定して、下記のコードを記述する。
- (BOOL)application: (UIApplication *)application
openURL: (NSURL *)url
sourceApplication: (NSString *)sourceApplication
annotation: (id)annotation {
return [GPPURLHandler handleURL:url
sourceApplication:sourceApplication
annotation:annotation];
}でここから悩んだのだが、認証を行う場合は、以下のメソッドを実行すればいいようだ。[signIn authenticate];これがGPPSignIn Class Referenceの方にあったので、すごく悩んでしまった。
実際の上のような流れで試したところ、IDとかユーザー名を取得することができたので、問題ないかと思う。
0 コメント:
コメントを投稿