4

問題 HybridAuthライブラリをTwitterに接続できましたが、機能しなくなりました。Twitterアカウントへの投稿も機能しました。

私が試し たことTwitterアプリのアクセストークンをリセットします。まったく新しいTwitterアプリを作成します。HybridAuthデバッグモードを使用してトラブルシューティングします。

エラーメッセージ 「認証に失敗しました。ユーザーが認証をキャンセルしたか、プロバイダーが接続を拒否しました。

元のエラーメッセージ:認証に失敗しました!Twitterがエラーを返しました。401無許可。」

の研究 これは鍵と秘密の欠如に起因しているようですが、私はこれらをTwitterの設定ファイルに設定しました。

コード

            $hybridauth = new Hybrid_Auth( $config );

            $adapter = $hybridauth->authenticate( "Twitter" );
            $hybridauth_session_data = $hybridauth->getSessionData();
            store_session_data($hybridauth_session_data);

            // get the user profile 
            $user_profile = $adapter->getUserProfile();

例外は、authenticateメソッドによってスローされています。アプリ経由でのアクセスを許可するように求められる前に、エラーがスローされます。

さらに詳しい情報が必要な場合は、お知らせください。リック

4

3 に答える 3

5

だからここに何が起こったのか、そしてあなたが知っておくべきことはここにあります:

  1. Twitterは現在の時刻を追跡します
  2. 認証するAPIリクエストが、Twitterの15分外の時間であると主張するサーバーから送信された場合、401エラーで失敗します。

修正方法:

USNOマスタークロックを使用して、サーバーの時刻を正しい時刻に設定しました。たまたま15分強のオフセットでした。

于 2013-02-06T16:37:00.763 に答える
3

これは私の場合の別の解決策です。

Twitterアプリで「コールバックURL」を設定します(ローカルでテストしている場合は、サンプルURLを使用できます)。

彼らはこれを必須フィールドとして指定せず、HybridAuthリクエストのURLでこのURLをオーバーライドすることを許可しています。

于 2015-10-13T08:45:08.833 に答える
0

他の誰かが自分のサーバー時間を編集できない場合は、その回避策があります。最も基本的でおそらく最もクリーンな方法は、Hybrid / thirdparty / OAuth / OAuth.phpに移動してgenerate_timestamp()関数を見つけ、サーバーとgtm + 0の間にある時間の不一致をtime()に追加することです。このような:

private static function generate_timestamp() {
return time() + 7200;

}

私の場合、サーバーはgtm-2であるため、time()関数を機能させるには、2時間(秒単位)を追加する必要がありました。

于 2015-03-16T04:49:40.463 に答える