勉強したことのメモ

Webエンジニア / プログラマが勉強したことのメモ。

opauthのTwitterでログインできない際の対応方法

   2024/02/20  PHP

opauthを使ったソーシャルログインのシステムにてTwitterでログインできなくなっていた。

「Callback URL not approved for this client application. Approved callback URLs can be adjusted in your application settings.」とエラー内容が表示されており、調べたところTwitter側のAPIの仕様変更らしく他所でも複数報告が見られた。

ただ、opauthをしており尚且つアプリではなくWebページでの記事がなかったので対応策が中々分からなかった。以下に対応方法をメモ。

 

対応方法

https://apps.twitter.com/

上記ページからログインして利用中のAppを選択し、Settingsタブを開く。Callback URLsを入れる。URLは「http://hoge.com/login/」で実装している場合は、

http://hoge.com/login/twitter/oauth_callback

を入力しUpdate Settingsボタンを押して設定を反映させると解決する。

 

その他

CallbackのURLを設定するというのはエラー内容から分かるんだけど、実際にURLをどう書けばよいのか分からなかった。以下辺りを試したが解決されなかった。

  • http://hoge.com/login/
  • http://hoge.com/login/index.php
  • http://hoge.com/login/callback.php
  • http://hoge.com/login/twitter

なのでopauthの「/login/lib/Opauth/Strategy/Twitter/TwitterStrategy.php」内にある、

'oauth_callback' => '{complete_url_to_strategy}oauth_callback',

の中身を見たところ「http://hoge.com/login/twitter/oauth_callback」が正解だった。

無いとは思うけどopauthのバージョン違いとかで上記で対応できない場合は、71行目あたりで以下を追記することでcallback用のURLが見られる。

public function request(){
    $params = array(
        'oauth_callback' => $this->strategy['oauth_callback']
    );
    var_dump($params); //これを追記
    $results =  $this->_request('POST', $this->strategy['request_token_url'], $params);

    if ($results !== false && !empty($results['oauth_token']) && !empty($results['oauth_token_secret'])){
        session_start();
        $_SESSION['_opauth_twitter'] = $results;

        $this->_authorize($results['oauth_token']);
    }
}

 - PHP

  関連記事

カンマ区切りの文字列で最後のカンマを排除

文字列をカンマ区切りにして、カンマを取り外して 配列にする際、頭もしくはお尻につ ...

PHPで縦横どちらかが指定の長さを超えた場合、比率を保ったままリサイズ

PHPで縦横どちらかが指定の長さを超えた場合、 比率を保ったままリサイズしたかっ ...

PHPでの$_REQUESTは色々危険

extract($_REQUEST)はかなり怖いよ、という話が最近あった。 でき ...

メモリキャッシュシステムであるMemcachedをPHPにて利用する方法

メモリキャッシュシステムであるMemcachedのインストール方法、IP制限、P ...

PHPでスマホ(iPhone / Android)に画像をダウンロードさせる方法とダウンロード後の保存場所について

PHPで作ったシステムにスマホ(iPhone / Android)でアクセスし何 ...