2014-10-02 2 views
3

У меня есть приложение для рельсов, которое должно связываться с magento, находящимся на одном сервере с моим рельсовым приложением. Я сделал все сообщения в SOAP, но он очень медленный, и я хочу изменить все на REST.рельсы - маркер запроса на magento api REST

У меня есть consumer key и consumer secret, которые я пришлю в magento, чтобы запросить токен.

DOCS: oauth github, magento oauth

@consumer = OAuth::Consumer.new("44a41ac2e67b", "89578e79570738d", { request_token_path: '/oauth/initiate', access_token_path: '/oauth/token' ,site: "http://shop.myproject.com" }) 
=> #<OAuth::Consumer:0x000000093955e0 @key="44a1edf5861edf37c", @secret="f87a0e4bfb7663fb78d", @options={:signature_method=>"HMAC-SHA1", :request_token_path=>"/oauth/initiate", :authorize_path=>"/oauth/authorize", :access_token_path=>"/oauth/token", :proxy=>nil, :scheme=>:header, :http_method=>:post, :oauth_version=>"1.0", :site=>"http://shop.myproject.com"}> 

@request_token = @consumer.get_request_token 
=> Got good response and request_token is good 

From magento docs: 
User Authorization 

The second step is to request user authorization. After receiving the Request Token 
from Magento, the application provides an authorization page to the user. The only 
required parameter for this step is the Request Token (oauth_token value) received from 
the previous step. The endpoint is followed by an oauth_token parameter with the value 
set to the oauth_token value. 

@access_token = @request_token.get_access_token 
OAuth::Unauthorized: 400 Bad Request 

В основном я нахожусь на странице, где обмен пользователя запрос маркера для маркеров доступа мыши разрешить или входящее имя пользователя и пароль. Но поскольку мне нужно сделать все в фоновом режиме, каков шаг, прежде чем я попрошу токен доступа. Я не могу найти в документации, как это сделать, и у меня нет фона php.

Я уже прочитал: 1, 2, 3

Пожалуйста, спросите меня для каких-либо других подробностей в разделе комментариев.

ответ

3

Исправить это, добавив авторизованный путь для потребителя. Плохое руководство ниже

1) Создание потребительского

@consumer = OAuth::Consumer.new("44a41ac2e67b", "89578e79570738d", { 
    request_token_path: '/oauth/initiate', 
    access_token_path: '/oauth/token', 
    authorize_path: '/admin/oauth_authorize', 
    site: "http://shop.myproject.com" 
    }) 

2) Получить запрос маркера

@request_token = @consumer.get_request_token 

3) Получить авторизовать URL

@authorized_url = @request_token.authorize_url 

4) Нажмите на нее, введите учетные данные, нажмите санкционировать

5) Захват oauth_verifier из URL

6) Получить доступ токенов

@access_token = @request_token.get_access_token(oauth_verifier: OAUTH_VERIFIER) 

Поскольку маркер доступа не собираюсь меняться, я сериализовал его с помощью YAML.dump и сохранил его.

Смежные вопросы