2015-04-20 4 views
1

Попытка подключения Magento 1.9 с использованием REST API и Scribe-Java 1.3.7Magento 1,9 REST API Scribe-Java Запрос Токен Ошибка

Done создания роли веб-служб и Потребителя, как показано ниже:

enter image description here

enter image description here

enter image description here

enter image description here

После этого выполните следующие коды:

public final class MagentoThreeLeggedOAuth extends DefaultApi10a { 

    private static final String BASE_URL = "http://my.magentoshop.com/"; 

    @Override 
    public String getAccessTokenEndpoint() { 
     return BASE_URL + "oauth/token"; 
    } 

    @Override 
    public String getAuthorizationUrl(Token requestToken) { 
     return BASE_URL + "admin/oauth_authorize?oauth_token=" 
       + requestToken.getToken(); //this implementation is for admin roles only... 
    } 

    @Override 
    public String getRequestTokenEndpoint() { 
     return BASE_URL + "oauth/token"; 
    } 

    public static class Main { 

     public static void main(String[] args) { 
      final String MAGENTO_API_KEY = "[xxxxxxxxx]"; 
      final String MAGENTO_API_SECRET = "[yyyyyyyyyy]"; 
      final String MAGENTO_REST_API_URL = "http://my.magentoshop.com/api/rest"; 

      // three-legged oauth 
      OAuthService service = new ServiceBuilder() 
        .provider(MagentoThreeLeggedOAuth.class) 
        .apiKey(MAGENTO_API_KEY).apiSecret(MAGENTO_API_SECRET).debug() 
        .build(); 

      // start 
      Scanner in = new Scanner(System.in); 
      System.out.println("Magento's OAuth Workflow"); 
      System.out.println(); 
      // Obtain the Request Token 
      System.out.println("Fetching the Request Token..."); 
      Token requestToken = service.getRequestToken(); 
      System.out.println("Got the Request Token!"); 
      System.out.println(); 

      // Obtain the Authorization URL 
      System.out.println("Fetching the Authorization URL..."); 
      String authorizationUrl = service.getAuthorizationUrl(requestToken); 
      System.out.println("Got the Authorization URL!"); 
      System.out.println("Now go and authorize Main here:"); 
      System.out.println(authorizationUrl); 
      System.out.println("And paste the authorization code here"); 
      System.out.print(">>"); 
      Verifier verifier = new Verifier(in.nextLine()); 
      System.out.println(); 

     } 

    } 

} 

и ниже ошибки отображаются на консоли:

Magento's OAuth Workflow 

Fetching the Request Token... 
obtaining request token from http://my.magentoshop.com/oauth/token 
setting oauth_callback to oob 
generating signature... 
using base64 encoder: CommonsCodec 
base string is: POST&http%3A%2F%2Fmy.magentosgop.com%2Foauth%2Ftoken&oauth_callback%3Doob%26oauth_consumer_key%3Dxxxxxxxxxxxxxxxx%26oauth_nonce%3D2939370741%26oauth_signature_method%3DHMAC-SHA1%26oauth_timestamp%3D1429517137%26oauth_version%3D1.0 
signature is: nINxAFwv6woAAQYbdHn6v2Uc+lw= 
appended additional OAuth parameters: { oauth_nonce -> 2939370741 , oauth_signature -> nINxAFwv6woAAQYbdHn6v2Uc+lw= , oauth_callback -> oob , oauth_consumer_key -> 20482d9e12ead3420a4c5aeb6978bf8e , oauth_timestamp -> 1429517137 , oauth_signature_method -> HMAC-SHA1 , oauth_version -> 1.0 } 
using Http Header signature 
sending request... 
response status code: 400 
response body: oauth_problem=parameter_absent&oauth_parameters_absent=oauth_token 
Exception in thread "main" org.scribe.exceptions.OAuthException: Response body is incorrect. Can't extract token and secret from this: 'oauth_problem=parameter_absent&oauth_parameters_absent=oauth_token' 
    at org.scribe.extractors.TokenExtractorImpl.extract(TokenExtractorImpl.java:41) 
    at org.scribe.extractors.TokenExtractorImpl.extract(TokenExtractorImpl.java:27) 
    at org.scribe.oauth.OAuth10aServiceImpl.getRequestToken(OAuth10aServiceImpl.java:64) 
    at org.scribe.oauth.OAuth10aServiceImpl.getRequestToken(OAuth10aServiceImpl.java:40) 
    at org.scribe.oauth.OAuth10aServiceImpl.getRequestToken(OAuth10aServiceImpl.java:45) 
    at MagentoThreeLeggedOAuth$Main.main(MagentoThreeLeggedOAuth.java:49) 

Что я пропустил или неправильно сделал?

Благодаря

ответ

1

ОК, только что узнал, что ошибки были:

Изменить это:

@Override 
public String getRequestTokenEndpoint() { 
    return BASE_URL + "oauth/token"; 
} 

Для этого:

@Override 
public String getRequestTokenEndpoint() { 
    return BASE_URL + "oauth/initiate"; 
} 
Смежные вопросы