2

我正在使用signpost for OAuth來訪問Magento服務器中的數據。我已經閱讀過各種教程,並且我打開了瀏覽器,以便用戶可以輸入他的憑據。但是,根據我的要求,我必須自動化這部分。使用路標OAuth獲取AccessToken而無需打開瀏覽器(雙腿Oauth)

因此,用戶不應該得到瀏覽器頁面。我在服務器端完成了這個設置(Magento),我點擊URL並返回到回調頁面。我想通過我的Android程序來做同樣的事情。

我曾嘗試以下,

consumer = new CommonsHttpOAuthConsumer(KEY, Secret); 
provider = new CommonsHttpOAuthProvider(OAUTH_INIT_URL,ACCESS_TOKEN_URL, AUTHORIZE_URL);     
try { 
    provider.retrieveRequestToken(consumer, OAuth.OUT_OF_BAND); 
    Log.d("Tokens" , consumer.getToken() + " -- " + consumer.getTokenSecret()); 
    } 

和我得到的請求令牌。但我不知道如何繞過下一步。我試圖直接訪問的accessToken(愚蠢的我)provider.retrieveAccessToken(consumer, "myCallback://callback");,但沒有運氣,它

oauth.signpost.exception.OAuthNotAuthorizedException: Authorization failed (server replied with a 401). This can happen if the consumer key was not correct or the signatures did not match. 

結束了我會很感激的任何幫助,因爲我被困在這個從去年3天。請告訴我是否需要提供更多數據。

+0

您好atul,你找到任何解決方案?我也面臨同樣的問題。我必須使用oauth進行web服務,而不想打開瀏覽器。 –

+0

不幸的不是。我最終使用了Magento的Rest API。讓我們看看我們是否得到任何幫助。我也會檢查我最後的工作。 –

+0

如果用戶不會去瀏覽器頁面,他將如何向magento服務器提供他的憑據? – Okas

回答

1
  OAuthConsumer consumer = new DefaultOAuthConsumer(myconsumerkey, 
       mysecretkey); 

     HttpURLConnection request; 
     URL baseUrl = new URL(myurl); 
     request = (HttpURLConnection) baseUrl.openConnection(); 
     consumer.sign(request); 

     InputStream in = new BufferedInputStream(
        request.getInputStream()); 
      BufferedReader reader = new BufferedReader(
        new InputStreamReader(in)); 
      StringBuilder out = new StringBuilder(); 
      String line = ""; 
      while ((line = reader.readLine()) != null) { 
       out.append(line); 
      } 
     String serverResponse = out.toString();