LoginSignup
8
9

More than 5 years have passed since last update.

iOSでwebViewを使わないTwitterログインを実装する

Last updated at Posted at 2015-11-18

アプリでログインする時に毎回Twitterのログイン・パスワードを入力するのは面倒です。
iOSの場合端末でアカウントを設定していることが殆どだと思うので、その場合はログイン情報入力なしでログインを行うことができます。
TwitterKitでもauthTokenSecretは取れるのですが、サーバーサイドでの認証でエラーになってしまうため、STTwitterで取得しなおしています。
※↑Twitterのキーとシークレットが間違っていただけでした。(追記)

使うもの

iOSクライアント

  • TwitterKit
  • (Fabric)←使っている前提です

サーバーサイド

  • kertz/twitteroauth

実装

iOS(objective-c)

twitterのセットアップは下記を参照します。
http://dev.classmethod.jp/smartphone/ios-fabric-sign-in-with-twitter/

twitterのキーとシークレットを書き換える

Info.plist
<key>APIKey</key>
<string>hogehoge</string>
<key>Kits</key>
<array>
    <dict>
        <key>KitInfo</key>
        <dict/>
        <key>KitName</key>
        <string>Crashlytics</string>
    </dict>
    <dict>
        <key>KitInfo</key>
        <dict>
            <key>consumerKey</key>
            <string>サーバーサイドで使っているものに書き換える</string>
            <key>consumerSecret</key>
            <string>サーバーサイドで使っているものに書き換える</string>
        </dict>
        <key>KitName</key>
        <string>Twitter</string>
     </dict>
</array>
ログイン画面.h
@property (weak, nonatomic) IBOutlet TWTRLogInButton *twitterLoginButton;
ログイン画面.m
- (void)viewDidLoad
{
    [super viewDidLoad];

    [_twitterLoginButton setLogInCompletion:^(TWTRSession * _Nullable session, NSError * _Nullable error) {
        [hud hide:YES];
        if (!error) {
            [self finishedTwitterLogin];
        } else {
            // error
        }
    }];
}

サーバーサイド(PHP)

クライアントから取得したtokenとsecretを元にユーザー情報を取得します。
TWからのレスポンスは下記参照。
https://dev.twitter.com/rest/reference/get/account/verify_credentials

ツイッター認証.php
public function auth()
{
    $oauth_token = Input::get('oauth_token');                                                                                                                                                                             
    $oauth_token_secret = Input::get('oauth_token_secret');
    // エラー処理が必要
    $connection = new TwitterOAuth('twitter-app-key', 'twitter-secret', $oauth_token, $oauth_token_secret);
    $twitter_user = $connection->get($connection->host . 'account/verify_credentials.json');

    // $twitter_user->id, $twitter_user->name, $twitter_user->profile_imageなどを使用する
}
8
9
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
8
9