我使用 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
。
答案 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) {
});