访问$ http.post响应数据

时间:2016-06-11 12:08:48

标签: javascript angularjs ionic-framework

我使用 cordova-ionic 创建小型移动应用程序,该应用程序通过与 oAuth2 集成的远程服务器进行身份验证。

首先,我尝试获取acccess_token然后使用access_token我正在尝试访问其他资源。

这就是我的尝试方式。

function getToken(user){
    var username=user.userName;
    var password = user.password;
    var authResponse;
    var access_token;
    var headers = {
       'Authorization': 'Basic ' + TOKEN_ENDPOINT.basicAuth,
       //'Content-Type': 'application/x-www-form-urlencoded',
       'Access-Control-Allow-Origin':'*'
    }
    $http.defaults.headers.common.Authorization='Basic ' + TOKEN_ENDPOINT.basicAuth;
    $http({
        method: "POST",
        headers: headers,
        url: 'http://remote/oauth/',
    }).then(function (data, status) {
        if (status == '200') { 
            access_token=data.access_token;
            console.log("Auth.signin.success!")
            console.log(data);
        }
    })
    return access_token;
}

这是我尝试使用access_token

的地方
var goToProfile=function(user){
    var token = getToken(user);  
    if(token != null){
        $http({
            method:'POST',
            url:(API_ENDPOINT.url+'/profile',user),
            param:{access_token:token}
        }).then(function(result){
            console.log(result.data.success);
            console.log("Successfully signed in");
        })
    }else{
        console.log('dasd');
    }
}

所以问题是getToken方法总是返回undefined

但在我的控制台中,我可以看到access_token。那我怎样才能得到access_token

1 个答案:

答案 0 :(得分:0)

尝试此示例并相应地修改代码

$http({
    method: "post",
    url: "http://localhost:8081/employee-connect/oauth/token",
    data:  "username=1234567891&password=chaitanya&grant_type=password&scope=read write&client_secret=my-secret-token-to-change-in-production&client_id=employeeConnectapp",
    withCredentials: true,
    headers: {
      'Content-Type': 'application/x-www-form-urlencoded'
    }
  })
    .success(function(data) {
      window.localStorage.setItem("token_type", data.token_type);
      window.localStorage.setItem("token", data.access_token);


          $http({
            method: "get",
            url: "http://localhost:8081/employee-connect/api/articles",
            withCredentials: true,
            headers: {
              'Accept' : 'application/json, text/plain, */*',
              'Authorization' : ''+window.localStorage.getItem("token_type")+' '+window.localStorage.getItem("token")
            }
          })
              .success(function(data) {
                $scope.news = data;
              })
              .error(function(data, status) {
              });

    })
    .error(function(data, status) {
    });