验证来自Laravel的API调用

时间:2015-10-14 08:13:43

标签: php api laravel oauth

我刚接触使用API​​,目前正在尝试在我正在开发的新应用程序中使用Trade Me API。

他们的authorisation guidelines表示他们使用OAuth来验证API调用,并且可以在查询字符串或授权标头中指定这些调用。

作为API调用的新手,我尝试使用guzzlehttp/oauth-subscriber,但在尝试拨打电话时失败了。

所以目前我只是想将细节附加到查询字符串。

我想要的电话要求:

  • oauth_consumer_key
  • oauth_signature
  • oauth_signature_method

其中oauth_consumer_key是消费者密钥,oauth_signature是消费者密钥。

当我尝试访问此网址以测试网址是否正确时,https://api.tmsandbox.co.nz/v1/Listings/123.json?oauth_consumer_key=XXX&oauth_signature=XXX&oauth_signature_method=PLAINTEXT

我收到错误:

  

“ErrorDescription”:“无效的PLAINTEXT签名。”

我显然已经在上面的网址中替换了我的密钥,但我看不出上面的内容有什么问题,似乎与他们的文档相符。

有人可以指出我做错了吗?

1 个答案:

答案 0 :(得分:1)

假设您正在使用Guzzle和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());
} );