我刚刚完成了https://auth0.com/docs/quickstart/spa/angular/no-api中描述的auth0 angularjs教程,并成功登录了Twitter(因此我获得了令牌)。我想扩展种子项目,向twitter API发出一些请求以获取用户时间线等。
我已尝试使用jsonp执行$http
请求,并在app.js中使用Authorization标头添加请求拦截器。它看起来像这样:
HomeCtrl
$http.jsonp('https://api.twitter.com/1.1/statuses/home_timeline.json?callback=JSON_CALLBACK')
.then(function(data) {
console.log(data);
});
App.js
.config( function myAppConfig ($routeProvider, authProvider, $httpProvider, $locationProvider, jwtInterceptorProvider, RestangularProvider) {
...
$httpProvider.interceptors.push('jwtInterceptor');
})
.factory('jwtInterceptor', function(store) {
return {
request: function(config) {
config.headers = config.headers || {};
config.headers.Authorization = 'Bearer ' + store.get('token');
console.log(config);
return config;
}
};
})
响应返回401需要授权:
Failed to load resource: the server responded with a status of 401 (Authorization Required)
https://api.twitter.com/1.1/statuses/home_timeline.json?callback=angular.callbacks._0
我做错了什么?在请求获取时间表之前我应该做另一件事吗?也许我对oauth工作感到困惑,我需要access_token来处理请求吗?
提前致谢。
答案 0 :(得分:0)
调用Twitter API时,必须使用Twitter访问令牌调用它,而不是使用适用于您的API的Auth0令牌。
查看此文档,说明如何执行此操作:https://auth0.com/docs/what-to-do-once-the-user-is-logged-in/calling-an-external-idp-api
如果有帮助,请告诉我:)。
干杯!