在 Oauth.io 中的服务器端身份验证期间出现“无效格式”错误
Posted
技术标签:
【中文标题】在 Oauth.io 中的服务器端身份验证期间出现“无效格式”错误【英文标题】:Getting "Invalid format" error during server side auth in Oauth.io 【发布时间】:2015-10-16 04:46:33 【问题描述】:我有一个 javascript 客户端和一个 laravel 后端,我正在使用 Oauth.IO 进行社交身份验证。我按照这里指定的步骤操作:http://docs.oauth.io/#authorizing-the-user-with-both-front-end-and-back-end-sdks
我通过调用generateStateToken()
方法成功获得了状态令牌,但是当我将它发送到$this->oauth->auth()
方法时,我得到Invalid Format 错误。你能告诉我这个错误是什么意思吗?我做错了什么。
客户端
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】:我真的很抱歉发布这个问题。我错过了文档中的一步。我把这个问题留在这里作为其他人的参考,以防其他人面临同样的问题。
错误出现在我的 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');
【讨论】:
以上是关于在 Oauth.io 中的服务器端身份验证期间出现“无效格式”错误的主要内容,如果未能解决你的问题,请参考以下文章
如何在 blazor webassembly 项目中对服务器端控制器中的用户进行身份验证?
具有无状态服务器且无服务器端呈现的 cookie 中的 JWT 身份验证