【问题标题】:Make Oauth API calls with existing Access Token and Access Token Secret使用现有的访问令牌和访问令牌秘密进行 Oauth API 调用
【发布时间】:2016-05-20 14:14:04
【问题描述】:

我正在使用Lusitanian PHP Oauth library (https://github.com/Lusitanian/PHPoAuthLib)。

用户在我的应用程序中获得授权后,我收到了 Access Token 和 Access Token Secret 的值。现在有了这些值,我想对 API 进行经过身份验证的调用。如何使用 Access Token、Access Token Secret 的值以及 Consumer Key 和 Consumer Secret 的值进行调用?我不想让用户每次都获得授权,为他进行 API 调用。有人有想法吗?

我的请求是这样的:

$result = json_decode($service->request('/users/getDetails'), true );

我已经尝试了 Firefox 的 REST 客户端和 Chrome 的高级 REST 客户端,它们成功执行 OAuth 调用,只有 Access Token、Access Token Secret、Consumer Key 和 Consumer Secret 的值。

同样,我想从我的 PHP 代码中执行 OAuth 调用。我正在使用的库依赖于 Session 来存储这些值(这需要用户每次登录)并构建 Authorization 标头和签名。有没有办法我可以手动构建签名和授权标头并进行 OAuth 调用?

【问题讨论】:

  • 我使用的 OAuth 服务几乎类似于 Twitter OAuth (1.0)

标签: php api oauth access-token


【解决方案1】:

最后,我调整了重用访问令牌的功能。 在我将令牌存储在其中之后,我正在从配置 php 文件中获取令牌。

令牌也可以存储在本地 PHP 会话中并从中读取。

存储token的代码在Service/AbstractService.php

$this->storage->storeAccessToken($this->service(), $token);

您可以像下面这样修改它,将令牌存储在会话变量中:

if(!isset($_SESSION['access_token'])) {
        $token = new StdOAuth1Token();

        $token->setRequestToken($access_token);
        $token->setRequestTokenSecret($access_token_secret);
        $token->setAccessToken($access_token);
        $token->setAccessTokenSecret($access_token_secret);

        $token->setEndOfLife(StdOAuth1Token::EOL_NEVER_EXPIRES);
        $_SESSION['access_token'] = serialize($token);
}

然后在向 API 发出请求时,您可以修改 request() 函数中的代码以使用会话中的令牌:

变化:

$token = $this->storage->retrieveAccessToken($this->service());

收件人:

$token = unserialize($_SESSION['access_token']);

这样,我可以使用自定义 PHP 会话来存储和检索访问令牌。您还可以使用数据库或文本文件来存储和检索令牌。有用!希望它对某人有用。

【讨论】:

    猜你喜欢
    • 2012-04-28
    • 1970-01-01
    • 1970-01-01
    • 2011-12-31
    • 2011-03-18
    • 2012-12-29
    • 2021-02-01
    • 2012-10-27
    • 1970-01-01
    相关资源
    最近更新 更多