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

标签 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);
}

?>

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

POST /oauth/request_token HTTP/1.1 Host: openapi.lovefilm.com Authorization: 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);

生成的请求始终是 GET。

有人能帮忙吗?

谢谢,

最佳答案

是的,根据OAuth Specification , the request for Temporary Credentials (AKA "Request Token")the request for Token Credentials (AKA "Access Token")必须作为 HTTP POST 请求提交,但 PECL OAuth 扩展似乎持续使用 GET 用于 getRequestToken()getAccessToken( )...默认情况下。

an $auth_type parameter to OAuth::__construct()接受 one of the following values :

  • OAUTH_AUTH_TYPE_AUTHORIZATION -- 在请求的 HTTP Authorization header 中提交 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() 方法都遵循此设置,which can also be set with OAuth::setAuthType()在对象的实例上。实际上,我在表演舞蹈时将身份验证类型设置为 OAUTH_AUTH_TYPE_FORM,然后重置为默认值 -- OAUTH_AUTH_TYPE_AUTHORIZATION -- 以发出资源请求。

关于php - OAUTH 使用 PHP 的 PECL OAUTH - 使用方法 getRequestToken() 时不能使用 POST?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4154182/

相关文章:

php - Laravel 中可以实现这种多对多关系吗?

php - 制作常见 SQL 字段的大小是多少?

php - 查询前设置最后一个ID的值

api - 具有 AngularJS 身份验证的 Semantics3 API

java - Spring Boot - OAuth2 - 所有请求都被禁止

Mac OSX Mavericks 升级后 PHP 和 Mongo 损坏

php - 通过 pecl 安装 pdo 时失败

php - 注册后重定向用户时出现问题

Facebook 访问 token : server-side vs client-side flows

php - 使用 PHP 5.5.3 在 MAMP 2.2 上安装 PECL Intl