Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Angularjs Angular.js:将Restangular和oauth ng结合起来_Angularjs_Oauth_Restangular - Fatal编程技术网

Angularjs Angular.js:将Restangular和oauth ng结合起来

Angularjs Angular.js:将Restangular和oauth ng结合起来,angularjs,oauth,restangular,Angularjs,Oauth,Restangular,我们已经构建了一个实现OAuth2.0的RestFul API 现在我想使用和连接AngularJS前端 但是我如何才能让两者就oauth令牌进行交互呢? Oauth ng应该处理登录/注销和令牌刷新。 Restangular应从oauth ng获取access_令牌,以发送令牌和所有请求 我当前的代码是这样实现的 angular .module('myapp', ['oauth','restangular'/* ... */ ]) .config(function ($rout

我们已经构建了一个实现OAuth2.0的RestFul API

现在我想使用和连接AngularJS前端

但是我如何才能让两者就oauth令牌进行交互呢?

Oauth ng应该处理登录/注销和令牌刷新。 Restangular应从oauth ng获取access_令牌,以发送令牌和所有请求

我当前的代码是这样实现的

angular
    .module('myapp', ['oauth','restangular'/* ... */ ])
    .config(function ($routeProvider,$locationProvider,RestangularProvider,AccessToken) {
        $routeProvider
            .when('/access_token=:accessToken', {
                template: '',
                controller: function ($location, AccessToken) {
                    var hash = $location.path().substr(1);
                    AccessToken.setTokenFromString(hash);
                    console.log(AccessToken); //THIS WORKS
                    $location.path('/');
                    $location.replace();
                }
            })
            .when('/', {
                templateUrl: 'views/main.html',
                controller: 'MainCtrl'
            })
            .otherwise({
                redirectTo: '/'
            });

        $locationProvider.html5Mode({
            enabled: true,
            requireBase: true
        }).hashPrefix('!');

        RestangularProvider.setBaseUrl('https://myapi.local/');
        // next line throws error
        RestangularProvider.setDefaultHeaders({Authorization: 'Bearer ' + AccessToken.get()});
    });
但此代码抛出一个错误“未知提供程序:AccessToken”。

似乎“AccessToken”在配置阶段还不可用。 但我不想在每个控制器中一次又一次地实现这个通用功能

连接两个模块的好方法是什么


谢谢你的帮助

AccessToken变量未注入到您正在使用的范围中。 您是否尝试将Restangular的令牌设置移动到实现承诺的程度。例如:

angular
.module('myapp', ['oauth','restangular'/* ... */ ])
.config(function ($routeProvider,$locationProvider,RestangularProvider) {
    $routeProvider
        .when('/access_token=:accessToken', {
            template: '',
            controller: function ($location, AccessToken) {
                var hash = $location.path().substr(1);
                AccessToken.setTokenFromString(hash);
                RestangularProvider.setDefaultHeaders({Authorization: 'Bearer ' + AccessToken.get()});
                console.log(AccessToken); //THIS WORKS
                $location.path('/');
                $location.replace();
            }
        })
        .when('/', {
            templateUrl: 'views/main.html',
            controller: 'MainCtrl'
        })
        .otherwise({
            redirectTo: '/'
        });

    $locationProvider.html5Mode({
        enabled: true,
        requireBase: true
    }).hashPrefix('!');

    RestangularProvider.setBaseUrl('https://myapi.local/');
});