2015-10-14 93 views
0

我剛剛使用API​​,目前正試圖在我正在開發的新應用程序上使用Trade Me API。從Laravel驗證API調用

他們的authorisation guidelines表示他們使用OAuth對API調用進行身份驗證,並且可以在查詢字符串或授權標頭中指定這些API調用。

作爲API調用的新手,我嘗試使用guzzlehttp/oauth-subscriber,但嘗試撥打電話時失敗了。

所以目前我只是試圖追加詳細信息到查詢字符串。

我試圖撥打電話要求:

  • oauth_consumer_key
  • oauth_signature
  • oauth_signature_method

哪裏oauth_consumer_key是消費者鍵,oauth_signature是消費者的祕密。

當我試圖訪問這個URL來測試URL是正確的 - https://api.tmsandbox.co.nz/v1/Listings/123.json?oauth_consumer_key=XXX&oauth_signature=XXX&oauth_signature_method=PLAINTEXT

我得到一個錯誤: 「無效的明文署名」:

「ErrorDescription中」

我明顯地在上面的URL中替換了我的鍵,但是我看不到上面出現了什麼問題,它似乎與它們的文檔相匹配。

有人可以指出我做錯了什麼嗎?

+0

你追加與簽名一個&符號?如果您通過'Authorization'標頭髮送授權,則更容易。嘗試通過curl手動進行:'curl https://api.tmsandbox.co.nz/v1/Listings/123.json -H'授權:OAuth oauth_consumer_key =「」,oauth_signature_method =「PLAINTEXT」, oauth_signature = 「<消費者祕密>&」''。您也可以在簽名後嘗試添加'&'。 – Dencker

+0

@Dencker好的,稍後我會嘗試'curl'。我的意思是,如果我可以弄清楚如何在頭文件中發送授權,或者如果有人可以幫助我這麼做,那麼我寧願這樣做。但是我無法完全理解Laravel如何做到這一點。這就是我使用查詢字符串尋找解決方案的原因。 – James

+0

您使用哪個庫來提出請求?他們中的大多數,像Guzzle或Requests一樣,都提供了一個簡單的' - > addHeader(「Authorization」,'OAuth oauth_consumer_key =「」.....')'方法或者那種風格。 – Dencker

回答

1

假設你正在使用狂飲和Laravel,作爲評論說,這將是如何實現這是一個非常簡單的例子(只是把它放在routes.php):

Route::get('/', function() 
{ 
    $client = new GuzzleHttp\Client(["base_uri" => "https://api.tmsandbox.co.nz/v1/"]); 

    $response = $client->request("GET", "Listings/123.json", ["headers" => ["Authorization" => 'OAuth oauth_consumer_key="YOUR-CONSUMER-KEY", oauth_signature_method="PLAINTEXT", oauth_signature="YOUR-CONSUMER-SECRET&"']]); 

    return Response::json($response->getBody()->getContents()); 
}); 
+0

當我運行這個我得到一個錯誤'類'Guzzle \ Http \客戶端'找不到'。在我的'composer.json'中,我使用''guzzlehttp/guzzle「:」〜6.0「',這是正確的版本嗎? – James

+0

請嘗試'GuzzleHttp \ Client'。 – Dencker

+0

啊,上面的例子是''guzzle/guzzle「:」^ 3.9「'(已棄用)。我要去拿點食物,之後我會重寫這個例子。 – Dencker