Как пройти аутентификацию в Magento 1.9 с OAuth 1.0a в Angular - PullRequest
0 голосов
/ 24 мая 2018

Я хочу пройти аутентификацию в приложении Angular в моем Magento.Я не вижу никакой документации или вопроса в StackOverflow, который помогает мне разобраться!

const consumerKey = 'c05028de10c242378cf5fd7eb7dd1008';
const consumerSecret = '4350c23b9fda5f491ac5276218b3541d';
const baseUrl = 'http://someSite.localhost';


oauth = new HttpParams()
.set('callback', 'http://127.0.0.1:4200/login')
.set('consumer_key', consumerKey)
.set('consumer_secret', consumerSecret);
url = baseUrl + '/oauth/initiate';


initiate() {
return this.httpClient.post(this.url, this.oauth).subscribe(
  data => console.log(data)
);
}

Ответ:

oauth_problem=parameter_absent&oauth_parameters_absent=oauth_consumer_key

1 Ответ

0 голосов
/ 24 мая 2018

Я решил это следующим образом:

1: импорт пакета Crypto-js

2: создание подписи

3: создание метки времени в секундах

4: Создание случайного числа для Nonce

5: статические значения остальных параметров

6: сделать запрос со всеми этими параметрами в URL


import { Injectable } from '@angular/core';
import { HttpClient, HttpResponse, HttpErrorResponse, HttpParams, HttpHeaders } from '@angular/common/http';
import { catchError, tap } from 'rxjs/operators';
import { throwError, Observable, of } from 'rxjs';
import * as CryptoJS from 'crypto-js';





@Injectable({
  providedIn: 'root'
})

//Making Huge request Parameters

export class AuthService {
  consumerKey = 'c05028de10c242378cf5fd7eb7dd1008';
  consumerSecret = '4350c23b9fda5f491ac5276218b3541d';
  baseUrl = 'http://someSite.localhost';
  callback = 'http://127.0.0.1:4200/login/';
  signature_method = 'HMAC-SHA1';
  timestamp = Math.floor(Date.now() / 1000); // Timestamp in Second
  signature = CryptoJS.HmacSHA1('Lazurd', this.consumerKey);
  nonce = Math.random();
  httpOptions = {
    headers: new HttpHeaders({
      'Content-Type': 'multipart/form-data',
    })
  };

  // tslint:disable-next-line:max-line-length
  url = this.baseUrl + '/oauth/initiate?oauth_consumer_key=' + this.consumerKey
    + '&oauth_callback=' + this.callback
    + '&oauth_consumer_secret=' + this.consumerSecret
    + '&oauth_signature_method=' + this.signature_method
    + '&oauth_nonce=' + this.nonce
    + '&oauth_timestamp=' + this.timestamp
    + '&oauth_signature=' + this.signature;

  constructor(private httpClient: HttpClient) { }
  // Get Magento Token
  initiate() {
    return this.httpClient.post(this.url, '', this.httpOptions).subscribe(
  data => console.log(data)
    );
  }
}
...