2017-01-23 6 views
1

У меня есть API-интерфейс Restore для OAuth2, разработанный с использованием весенней загрузки с сервером ресурсов и сервером авторизации. Я мог бы успешно извлечь токен с помощью клика cURL, POSTMAN Rest и запросить предоставленную услугу с помощью токена, предоставленного OAuth. Теперь, я должен знать, как передать OAuth2 client_id, secret_id, используя angular2. я передаю запрос как getOAuthToken (clientCredintial): Observable {Как отправить идентификатор клиента и секретный идентификатор OAuth2 с помощью Angular 2?

var body = `username=admin&password=nex1234`; 
var headers = new Headers(); 
headers.append('Content-Type', 'application/x-www-form-urlencoded'); 
let response = this.http.post(`${AppSettings.BACK_ENDPOINT}/oauth/token`,body,{ headers: headers }); 
let oauthTokenItems = response.map(mapOAuthTokenItems); 
return oauthTokenItems; 

} , но я получаю исключения в браузере, как ВАРИАНТОВ http://localhost:8080/rwsweb/oauth/token 401()

oauth-token:1 XMLHttpRequest cannot load     http://localhost:8080/rwcweb/oauth/token. Response for preflight has invalid  HTTP status code 401 
error_handler.js:47 EXCEPTION: Response with status: 0 for URL: null 
ErrorHandler.handleError @ error_handler.js:47 
next @ application_ref.js:272 
schedulerFn @ async.js:82 

Subscriber.js: 227 Uncaught Ответ {_body: ProgressEvent, статус: 0, ok: false, statusText: "", заголовки: заголовки ...} enter code here

ответ

0

Использовать код:

import { Injectable } from '@angular/core' 
import { Http } from '@angular/http'; 
import { Headers, RequestOptions } from '@angular/http'; 

@Injectable() 
export class LoginService { 
    private urlLogin: string; 

    constructor(private http: Http) { 
     this.urlLogin = "http://yourserver/oauth/token"; 
    } 

    public login(user) { 

     let headers = new Headers({ 
      "Content-Type": "application/x-www-form-urlencoded", 
      "Accept": "application/json", 
      "Authorization": "Basic " + btoa("yourclientid" + ':' + "yourclientsecret") 
     }); 

     let options = new RequestOptions({ headers: headers }); 

     let data = "username=" + user.yourlogin + "&password=" + encodeURIComponent(user.yourpass) + "&grant_type=password&" + 
      "client_secret=yourclientsecret&client_id=yourclientid"; 

     return this.http.post(this.urlLogin, data, options) 
      .map(res => res.json()); 
    } 

} 
+0

Я попытался выше, но теперь я получаю одно исключение на Chrome brawser, как XMLHttpRequest не может загрузить HTTP: // локальный: 8080/rwcweb/OAuth/маркер. Ответ на предполетный период имеет неверный код состояния HTTP 401 –

+0

Проверьте, соответствуют ли учетные данные. Ваш пользователь, проходите, grant_type ... –

+0

Ваш тест в почтальоне? –