使用auth0登录后,在Twitter API请求上需要401授权

时间:2015-05-08 17:24:42

标签: angularjs api twitter oauth auth0

我刚刚完成了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来处理请求吗?

提前致谢。

1 个答案:

答案 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

如果有帮助,请告诉我:)。

干杯!