当前位置: 首页 > 知识库问答 >
问题:

Angularjs$超文本传输协议服务传递facebook访问令牌

詹唯
2023-03-14

我正在使用MEAN stack构建的SPA中实现fb身份验证。虽然我已经使用facebook token passport策略成功实现了fb身份验证,但我在保护APIendpoint方面遇到了问题。因为为此,我需要在$http服务中同时传递经过身份验证的用户对象和访问令牌,并且我已经尝试将访问令牌作为用户对象的属性和头属性传递,但仍然是401(未经授权的错误)。下面是我的代码片段。

护照留档显示“授权:不记名base64_access_token_string”。令牌应该以base 64格式编码吗?请帮忙。

服务器代码

app.get('/api/getbikes*',
passport.authenticate('facebook-token',{session: false}),
function(req,res){
    if(req.user){
        console.log('In getbikes api');
    // console.log('req.query :',req.query);
        var msg="";
        ubBike
            .find({cust:req.query._id})
            .populate('cust','email')
            .exec(function(err,bikes){
                res.send(bikes);
                if(err) throw err;
            });
    }
    else
    {
        res.send(401);
    }

});

角码

服务

this.getbikes = function(user){
    var deferred = $q.defer();
    $http({
        method:"GET",
        url:"http://localhost:3000/api/getbikes",
        params: user,
        headers:{
            Authorization:auth.getAccesstoken()
        }            
    }).then(function successCallback(srresponse){
        deferred.resolve(srresponse.data);
    }, 
        function failureCallback(srresponse){
        $log.error("get bikes http call failed ",srresponse.data);
        deferred.reject(srresponse.data);
    });//$http
    return deferred.promise;
};//getbikes

控制器

$scope.fblogin= function(){
        auth.fblogin().then(
                function(response){

                $scope.isAuth = auth.isAuth;
                $scope.usr =auth.getResponseobj();
                $scope.usr.access_token=auth.getAccesstoken();  
                $scope.profpic=auth.profpic;

                bike.getbikes($scope.usr).then(function(response){

                    if (response.length ==0)
                    {
                    $location.path('/addbike');//redirect to addbike screen    
                    }
                    else{
                    $location.path('/appoint');//else redirect to view appointment screen
                    }
                },function(reason){
                    $scope.msg1 = reason;
                });//getbikes


            },function(reason){
                 $log.log("fblogin() - failure :Need to login to the application :"+reason);
            })

        };//fblogin

共有1个答案

贝研
2023-03-14

令人惊讶的是,当我以“Authorization:Bearer access_token_string”的形式发送头时,即fb token原样,而不使用base64编码,API身份验证工作得非常好。这与passport facebook令牌文档相反https://github.com/drudge/passport-facebook-token

 类似资料:
  • httpd是Apache超文本传输协议(HTTP)服务器的主程序。被设计为一个独立运行的后台进程,它会建立一个处理请求的子进程或线程的池。 通常,httpd不应该被直接调用,而应该在类Unix系统中由apachectl调用,在Windows NT/2000/XP/2003中作为服务运行和在Windows 95/98/ME中作为控制台程序运行. 语法 httpd [ -d serverroot ]

  • 我试图禁用我的AngularJS应用程序中的缓存,但它无法使用以下代码: 当我使用

  • 我想测试一个连接到Github api的应用程序,下载一些记录并对其进行处理。我想要一个模拟对象,我做了如下操作: 看起来不错吧?我应该在thenReturn中输入什么(它需要HttpResponse,但我不知道如何创建)。谢谢你的回答。如果你有更好的想法,我将不胜感激。 更新:字符串响应是一个示例响应

  • 我正在从我的角UI调用Spring引导REST服务。只要Spring Boot Rest服务作为Spring Boot应用程序执行,它就运行良好。但是一旦我将其转换为WAR文件并部署在Jboss 6.2.4服务器上,我就会得到404。我看到来自UI的REST服务调用成功,但请求JSON没有通过。在请求JSON上,我正在传递2个字符串和一个上传的excel文件。 这是我的angular UI htt

  • 我正在使用GWT和Spring controller来管理http流量。有些请求可能需要很长时间,但我希望在超过给定时间时终止请求。 我如何配置超时Spring。我也使用Apache Tomcat 7.0。我试图在tomcat上inrease最大线程,但有一段时间tomcat工作缓慢,因为请求线程不会死。

  • 我只是有一个关于服务中http请求的结构和处理响应的问题。我正在使用Angular2。alpha46 Typescript(刚刚开始测试-我喜欢它…Ps…。感谢所有一直致力于它并通过github作出贡献的人) 因此,采取以下措施: 登录表单。组成部分ts 从这个组件中,我导入了我的userService,它将容纳我的超文本传输协议请求,以登录用户。 使用者服务ts 我想做的是能够处理http请求之