アプリでログインする時に毎回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などを使用する
}