OAUTH使用PHP的PECL OAUTH - 使用方法getRequestToken()时不能使用POST?

Ben*_*ine 6 php oauth pecl

在尝试对API进行身份验证时,我正在使用PECL OAuth.

示例代码:

<?php

$requestUri = 'http://openapi.lovefilm.com/oauth/request';

$consumerKey = 'MYCONSUMERKEY'; 
$consumerSecret = 'MYSECRET';

$oauth = new OAuth($consumerKey, $consumerSecret);

$oauth->setAuthType(OAUTH_AUTH_TYPE_AUTHORIZATION);
$oauth->setVersion('1.0');
$oauth->setTimestamp(mktime());


$oauth->enableDebug();

try
{
    $req = $oauth->getRequestToken($requestUri, 'oob');
    var_dump($req);
}
catch(OAuthException $e)
{
    print '<pre>';
    var_dump($e);

    var_dump($oauth->debugInfo);
}

?>
Run Code Online (Sandbox Code Playgroud)

他们提供的规范(http://developer.lovefilm.com/-registration req)说我应该发一个类似下面的请求:

POST/oauth/request_token HTTP/1.1主机:openapi.lovefilm.com授权:OAuth oauth_callback ="http%3A%2F%2Fyour-service.com%2Fsuccess",oauth_consumer_key ="2blu7svnhwkzw29zg7cwkydn",oauth_nonce ="5f38dbc02a97567965f14d",oauth_signature = "sPSVmqN%2FXu9k0wlZxF0PqPZwYGo%3D",oauth_signature_method ="HMAC-SHA1",oauth_timestamp ="1278499295",oauth_version ="1.0"

但是,当我使用该方法时:

$oauth->setAuthType(OAUTH_AUTH_TYPE_AUTHORIZATION);
Run Code Online (Sandbox Code Playgroud)

生成的请求始终是GET.

有人可以帮忙吗?

谢谢,

AL *_*e X 2

是的,根据OAuth 规范临时凭证请求(又名“请求令牌”)令牌凭证请求(又名“访问令牌”)必须作为 HTTPPOST请求提交,但 PECL OAuth 扩展似乎持续使用GET对于getRequestToken()getAccessToken()...默认情况下。

一个$auth_type参数OAuth::__construct()接受以下值之一

  • OAUTH_AUTH_TYPE_AUTHORIZATION-- 在Authorization请求的 HTTP 标头中提交 OAuth 参数(GET默认使用请求)。
  • OAUTH_AUTH_TYPE_URI-- 在请求 URI 中提交 OAuth 参数(即请求中的查询参数GET)。
  • OAUTH_AUTH_TYPE_FORM-- 将 OAuth 参数作为 HTTP POST 正文的一部分(在请求中POST)提交。
  • OAUTH_AUTH_TYPE_NONE-- 根本不提交 OAuth 参数,即“NoAuth”请求(也是GET默认情况下)。

根据我的经验,fetch()getRequestToken()getAccessToken()方法都遵循此设置,也可以OAuth::setAuthType()在对象的实例上进行设置。OAUTH_AUTH_TYPE_FORM在实践中,我在表演舞蹈时将身份验证类型设置为,然后重置为默认值OAUTH_AUTH_TYPE_AUTHORIZATION——以发出资源请求。