2

JavaScript クライアントと laravel バックエンドがあり、ソーシャル認証に Oauth.IO を使用しています。ここで指定された手順に従いました: http://docs.oauth.io/#authorizing-the-user-with-both-front-end-and-back-end-sdks

メソッドを呼び出して状態トークンを正常に取得しましたが、それをメソッドgenerateStateToken()に送信すると、無効な形式エラーが発生します。このエラーの意味と、私が間違っていることを教えてください。$this->oauth->auth()

クライアント側

var selectedAuth = 'facebook';
$.post('http://localhost/auth/v1/social', {provider: selectedAuth, get_state_token: 1}, function(data){
    OAuth.popup(selectedAuth)
    .done(function(result) {
        console.log(result);
        $.post('http://localhost/auth/v1/social', {provider: selectedAuth, code: data.token, access_token: result.access_token}, function(data){
            console.log(data);
        }, 'json');
    })
    .fail(function (err) {
        //handle error with err
    });
}, 'json');

サーバ側

// code to get the state token in a different method
$token = $this->oauth->generateStateToken();
return response()->json(['status' => 'success', 'token' => $token]);

- をちょきちょきと切る -

// code to get access token from state token in another method
$provider = 'facebook';
$request_object = $this->oauth->auth($provider, array(
    'code' => $code
));
$credentials = $request_object->getCredentials();

$code最初のステップで受け取った正確な状態トークンがあることを確認しました。の値$credentialsは次のとおりです。

{"status":"error","data":{"code":"Invalid format"},"refreshed":false}

ここで私を助けてください。このエラーは、facebook と twitter の両方でも発生します。詳細が必要な場合はお知らせください。

4

1 に答える 1

1

この質問を投稿して本当に申し訳ありません。ドキュメントのステップを見逃していました。他の誰かが同じ問題に直面した場合に備えて、他の人への参照としてこの質問をここに残しておきます。

エラーは私のJavaScriptコードにありました。を呼び出すOauth.popup()ときに、状態トークンを渡し、サーバーに渡されるはずのコードを取得する必要がありました。コードの代わりに状態トークンをサーバーに直接送信していました。

正しいコードは次のようになります。

var selectedAuth = 'facebook';
$.post('http://localhost/auth/v1/social', {provider: selectedAuth, get_state_token: 1}, function(data){
    OAuth.popup(selectedAuth, {
        state: data.token
    })
    .done(function(result) {
        console.log(result);
        $.post('http://localhost/auth/v1/social', {provider: selectedAuth, code: result.code, access_token: result.access_token}, function(data){
             console.log(data);
        }, 'json');
    })
    .fail(function (err) {
        //handle error with err
    });
 }, 'json');
于 2015-07-25T16:46:56.287 に答える