Posted at

iOSでソーシャルログイン

More than 3 years have passed since last update.


概要

よくアプリで見かけるソーシャルログインを実装する際のメモになります。

以下2つのSNSについて簡潔に。


  • facebook

  • twitter


facebookログイン

facebookログインを行う際には下記2パターンの認証方法が存在します。


  1. WebViewを用いたブラウザ上でのログイン

  2. facebook SDKを用いたログイン

1はfacebook側の仕様変更に左右されやすいのでSDKを使用したログインをお勧めします。


実装方法

ざっくりと流れをまとめると以下のようになります。


  1. facebook developerにてアプリケーションを作成

  2. CocoaPodsを用いてfacebook sdkをインストール

  3. plistの編集

  4. FBLoginViewを作成

  5. Permissionの指定

  6. ログイン後のdelegateメソッドにて処理を行う

FBLoginViewを設置するだけでボタンが勝手に表れます。そのボタンをタップする事でfacebookログインが行われます。

詳しくはこちらを見て頂ければ十分です。むしろこのURL通りやって大丈夫です。

上記サイト以外にかいてあることをした良い場合は公式ドキュメントを参考にしてください。


利用シーン

ログインが成功すると以下のデリゲートメソッドが呼ばれます。

- (void)loginViewFetchedUserInfo:(FBLoginView *)loginView user:(id<FBGraphUser>)user

ここでuserを出力してみると以下のようなデータが入っています。

{

email = "xxxxxxxxxxxxxxxx";
"first_name" = "Yu-ta";
gender = male;
id = 879830848696400;
"last_name" = Teshigawara;
link = "https://www.facebook.com/app_scoped_user_id/879830848696400/";
locale = "ja_JP";
name = "Yu-ta Teshigawara";
timezone = 9;
"updated_time" = "2014-11-01T06:42:54+0000";
verified = 1;
}


twitterログイン

twitter apiを使用する際には、公式サイトにて紹介されているライブラリを使用します。

Objective-Cの欄を見てみると以下の2つがあげられています。

今回はnst/STTwitterを使用した例を紹介します。


nst/STTwitterを使用したtwitterログイン

twitterアプリでログインをするまでの手順は以下となります。

1. twitter developerにてアプリを作成

2. CocoaPodsを用いてSTTwitterをインストール

3. ログインコードの記述


ログインコード

ボタンを設置し、以下のコードを記述することでログインする事ができます。


twitterLoginSample

STTwitterAPI *twitter = [STTwitterAPI twitterAPIWithOAuthConsumerName:nil

consumerKey:@"xxxxxxxxxxxxxxxxxx"
consumerSecret:@"xxxxxxxxxxxxxxxxxxxx"];
[twitter postReverseOAuthTokenRequest:^(NSString *authenticationHeader) {
STTwitterAPI *twitterAPIOS = [STTwitterAPI twitterAPIOSWithFirstAccount];
[twitterAPIOS verifyCredentialsWithSuccessBlock:^(NSString *username) {
[twitterAPIOS postReverseAuthAccessTokenWithAuthenticationHeader:authenticationHeader
successBlock:^(NSString *oAuthToken,
NSString *oAuthTokenSecret,
NSString *userID,
NSString *screenName) {
NSLog(@"userID %@", userID);
} errorBlock:^(NSError *error) {
[self twitterConnectionError];
}];

} errorBlock:^(NSError *error) {
[self twitterConnectionError];
}];

} errorBlock:^(NSError *error) {
[self twitterConnectionError];
}];
}


postReverseAuthAccessTokenWithAuthenticationHeaderの部分でログインしているtwitterの情報が取得できるので、あとはよしなに使用してください。


参考URL