使用Oauth的Ionic检索和处理数据,需要帮助

时间:2018-12-17 22:42:02

标签: http post ionic-framework oauth-2.0 multipartform-data

狗提供者中的代码->

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有关因为它正在等待文档完成加载,但是我可能错了,而且我不知道如何解决它)?

1 个答案:

答案 0 :(得分:0)

我是对的,js不会等待方法完成,而是稍后再执行。 我使用了await和async来解决此问题。