在Oauth.io中的服务器端身份验证期间出现“格式无效”错误

时间:2015-07-25 16:33:35

标签: php laravel authentication oauth oauth.io

我有一个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也会出现此错误。如果您需要更多详细信息,请与我们联系。

1 个答案:

答案 0 :(得分:1)

我很抱歉发布这个问题。我错过了文档中的一个步骤。我在这里留下这个问题作为其他人面临同样问题的参考。

错误出现在我的javascript代码中。在调用addComment.php时,我需要传递状态令牌并获取一个代码,然后该代码应该传递给服务器。我直接将状态令牌发送到服务器而不是代码。

正确的代码是这样的:

Oauth.popup()