打字稿Ionic 2 com angularjs。 Credenciais em Http post para pegar token

时间:2017-09-09 20:16:06

标签: angularjs http typescript ionic2 token

首先,大家下午好,我希望你没事。

我是AngularJS的新手。我使用Visual Studio,Ionic 2和打字稿。

我已经设法通过.net中的REST api提供我的应用程序,现在我已经实现了一个令牌进行测试。它是Microsoft.Owin.Security.OAuth ... 在我在Xamarin中制作令牌之前它已经奏效了。现在我尝试使用Angularjs:

import { Injectable } from '@angular/core';
import { Http, Headers, RequestOptions, Response } from '@angular/http';
import { Observable } from 'rxjs/Observable';
import { Storage } from '@ionic/storage';
import { URLSearchParams } from "@angular/http";
import 'rxjs/add/operator/map';
import 'rxjs/Rx';


public GetValidatedToken(){
  this.urlToken = 'http://localhost:63634/token';
  this.headers = new Headers();
  this.headers.append('Content-Type', 'application/x-www-form-urlencoded');

   // this.data = 'grant_type=password&username=' + 'User' + '&password=' + 'user1234-';    
   // this.data = "grant_type=password" + "&username=User" + "&password=user1234-";

   this.urlSearchParams = new URLSearchParams();

   this.urlSearchParams.append('grant_type', 'password');
   this.urlSearchParams.append('username', 'User');
   this.urlSearchParams.append('password', 'user1234-');

   this.data = this.urlSearchParams.toString();


   this.http.post('http://localhost:63634/token', this.data, { headers: this.headers })
     .subscribe(res => {
        if (res.json().success) {
           window.localStorage.setItem('token', res.json());
           this.jsonresult = window.localStorage.getItem('token');                
           console.log('Sucesso!');
        } else {
           this.jsonresult = 'Erro ao pegar token.';                
           console.log('Deu erro!');
        }
  });

  return (this.jsonresult);
}

我想用这个函数返回标记字符串。 错误在于它没有成功,它会进入" else"。另一个问题是"结果"功能。 即使我在变量中放了一条消息,但在另一个类中没有返回内容......它返回" undefined"

在另一堂课中,我这样说:

import { TokenValidate } from '../token/TokenValidate';

...
constructor(public http: Http, public tokenValid: TokenValidate, ) {
  this.http = http;
  this.token = this.tokenValid.GetValidatedToken();
  console.log('Token bearer :' + this.token);
}

我做了很多研究,所以我没有打开一个问题,但它没有用。

记住人们,我对此完全陌生,它肯定是一个荒谬的细节

令牌类型是" Bearer"。

提前感谢您的帮助。 阿,阿曼达马林斯。

1 个答案:

答案 0 :(得分:0)

我设法解决了:

TokenValidate类

>constructor(public http: Http) {
>  this.http = http;
>}
>
>public GetValidatedToken (credentials: string){
>    this.urlToken = 'http://localhost:63634/Token';
>   
>
>    var header = new Headers();
>    header.append('Content-Type', 'application/x-www-form-urlencoded');
>            
>    this.http.post(this.urlToken, credentials,{ headers: header })
>      .subscribe(res => {
>      this.result = res.json();
>    localStorage.setItem('token',this.resultado.access_token);            
>    });
>
>    this.jsonresult = localStorage.getItem('token');
>    //console.log(this.jsonresult);
>
>    return
>        ( this.jsonresult );
>}

UserService类

>constructor(public http: Http, public tokenValid: TokenValidate){
>    this.http = http;
>    this.headers = new Headers ({'Content-Type': 'application/json',
>      'Accept': 'q = 0.8; application/json; q = 0.9'});
>    this.creds = "grant_type=password" + "&username=User" 
>        +"&password=user1234-";
>    this.token = this.tokenValid.GetValidatedToken (this.creds);
>    console.log ('Token bearer:' + this.token);
>    this.headers.append ('Authorization', 'Bearer' + this.token);
>            
>    this.options = new RequestOptions({headers: this.headers});
>}
>
>getUsers(){
>    if (this.data){
>       return Promise.resolve(this.data);
>    }
>       
>    return new Promise(resolve => {
>        this.http.get (this.apiUrl+'/user', this.options)
>         .map(res => res.json())
>         .subscribe(data => {
>             this.data = data;
>             solve(this.data);
>         });
>    });
>}

我希望它可以帮助那些需要它的人。

谢谢! =)

Att Amanda Marins。