http - Ionic 使用 Oauth 检索和操作数据,需要帮助
问题描述
狗提供者中的代码->
public getAuth(): string {
let final_token: string;
var form = new FormData();
form.append("username", "email@gmail.com");-
form.append("password", "randomPass");
form.append("client_id", "1");
form.append("client_secret", "my_secret");
form.append("grant_type", "password");
var settings = {
async: true,
crossDomain: true,
url: "oauth/token",
method: "POST",
headers: {
"cache-control": "no-cache",
"Postman-Token": "postman_token"
},
processData: false,
contentType: false,
mimeType: "multipart/form-data",
data: form
};
$.ajax(settings).done(function(response) {
let obj = JSON.parse(response);
final_token = obj.token_type + " " + obj.access_token;
return final_token;
});
return final_token;
这是我用来从使用 Oauth2 的 api 中提取我需要的数据的方法。它目前有效,我收到了令牌。但是,当我通过“狗”提供者在课堂上用离子处理它时:
provider: DogProvider;
constructor(
public navCtrl: NavController,
public navParams: NavParams,
dogProvider: DogProvider
) {
this.provider = dogProvider;
}
ionViewDidLoad() {
console.log("this.provider.getAuth()");
}
它返回未定义,我该如何解决?我应该订阅或映射结果吗,老实说,我不知道,因为当我登录我调用的方法时,它会提取正确的身份验证字符串,但只有在它返回未定义之后(我认为这与 jquery 有关因为它正在等待文档完成加载,但我可能错了,我不知道如何修复它)?
解决方案
我是对的,js 不会等待方法完成,而是稍后执行。我使用 await 和 async 来解决问题。