我成功地使用 curl 请求通过 Django-social-auth 使用 Facebook 令牌对我的 Django 项目中的用户进行身份验证,以返回我个人网站的令牌。很简单,我有一个 Facebook 令牌,我将其转换为 Django 令牌作为回报,但我只是使用 CURL 请求来完成这一壮举。我使用的框架来自 Philip Garnero (1)。
CURL 请求 - curl -X POST -d "grant_type=convert_token&client_id=&client_secret=&backend=facebook&token=" http://localhost:8000/auth/convert-token
当我尝试使用 AJAX 请求执行此操作时,就会出现混乱。我的ajax设置方式有问题吗?在将我的 facebook 令牌转换为经过身份验证的 Django 令牌之前,我是否需要先获取一个 csrf 令牌?
更新:通过代理运行我的 ajax 请求时,我收到 400 错误 unsupported_grant_type。该请求与我在 curl 命令和 Postman 命令中成功执行的请求相同。
阿贾克斯请求:
$http({
url: "proxy/url/...",
async: false,
crossDomain: true,
method: "POST",
data: {
"client_id": "...",
"client_secret": "...",
"grant_type": "password",
"username": "...",
"password": "..."
},
headers: {
'Content-Type': 'application/x-www-form-urlencoded'
}
}).success(function(data, status, headers, config) {
console.log(data);
}).error(function(data, status, headers, config) {
console.log("error status = " + status);
console.log(angular.toJson(data));
});
(1) - https://github.com/PhilipGarnero/django-rest-framework-social-oauth2