2015-04-21 1 views
3

Я использую библиотеку scribe для регистрации Android с Magento.Magento oauth with android

Но я получаю сообщение об ошибке:

org.scribe.exceptions.OAuthException: Response body is incorrect. Can't extract token and secret from this: '<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN"> 
<p>The requested URL /oauth/initiate was not found on this server.</p> 

Но мой ключ, секретный и URL-адрес все правильно. Я правильно определил пользователя и роли.

Я взял ссылку здесь: https: //gmartinezgil.wordpress.com/2013/08/05/using-the-magento-rest-api-in-java-with-scribe/

Мой код выглядит так: вызывающему Asyntask от деятельности: new OauthAsyncTask().execute();

и тогда моя задача:

public class OauthAsyncTask extends AsyncTask<Void, Void, Void> { 

     @Override 
     protected Void doInBackground(Void... params) { 

      try { 
       // oauth for magento api access 
       OAuthService service = new ServiceBuilder() 
         .provider(MagentoThreeLeggedOAuth.class) 
         .apiKey(MAGENTO_API_KEY) 
         .apiSecret(MAGENTO_API_SECRET) 
         .build(); 

       Token requestToken = service.getRequestToken(); 

       String authorizationUrl = service.getAuthorizationUrl(requestToken); 

       Verifier verifier = new Verifier("Getting TOken"); 

       Log.e("authorizationUrl:", authorizationUrl); 


       Token accessToken = service.getAccessToken(requestToken, verifier); 

       Log.e("accessToken:", accessToken.toString()); 


       OAuthRequest request = new OAuthRequest(Verb.GET, "MAGENTO_REST_API_URL"+ "/products"); 
       service.signRequest(accessToken, request); 
       Response response = request.send(); 

       Log.e("response:", response.toString()); 

      } catch (Exception e) { 
       e.printStackTrace(); 
      } 


      return null; 
     } 
    } 

// Auth класс

public static final class MagentoThreeLeggedOAuth extends DefaultApi10a { 
    private static final String BASE_URL = "http://myapp.com/"; 

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

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

    @Override 
    public String getAuthorizationUrl(Token token) { 
     return null; 
    } 


    } 

Пожалуйста, помогите мне в этом вопросе.

ответ

2

Проблема глупо, но сложно, я попросил разработчиков Magento, что является ОСНОВА URL он ответил «http://myapp.com/» и застрял с вышеуказанной проблемой, когда я искал о нем больше, я обнаружил, что некоторые пользователи с помощью BASE-адрес как «http://myapp.com/magento» или «http://myapp.com/magento/index.php» и т. Д. Итак, я обнаружил, что реальный путь был «http://myapp.com/index.php», он не был перенаправлен на BASE-адрес. Поэтому некоторые моменты, когда продукт находится в режиме разработки, возникают такие проблемы и просто подтверждают, что magento dev - это точный путь.