PHP OAuth :: fetch()在第二次连续调用时返回错误请求

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了PHP OAuth :: fetch()在第二次连续调用时返回错误请求相关的知识,希望对你有一定的参考价值。

我正在使用OAuth1连接到Smugmug API,我有这个代码从他们的服务器检索专辑。

class SmugmugHelper
{
    private $oauth_client;

    public function __construct()
    {
        $this->oauth_client = new OAuth("REPLACED_KEY", "KEPLACED_KEY");
        $this->oauth_client->setToken("REPLACED_KEY", "REPLACED_KEY");
    }

    public function getAlbum($node_id)
    {
        $url = "https://www.smugmug.com/api/v2/node/" . $node_id;
        $parameters = [];
        $method = 'GET';

        // this fetch always works
        $this->oauth_client->fetch($url, $parameters, $method, array('Accept' => 'application/json'));
        $response = $this->oauth_client->getLastResponse();
        $response = json_decode($response, true);

        $album_uri = $response['Response']['Node']['Uris']['Album']['Uri'];
        $url = "https://www.smugmug.com" . $album_uri;

        // this fetch doesn't work on prod but it does on local
        $this->oauth_client->fetch($url, $parameters, $method, array('Accept' => 'application/json'));
        $response = $this->oauth_client->getLastResponse();
        $response = json_decode($response, true);

        $album = $response['Response']['Album'];
        return $album;
    }
}

然后在我的控制器中我做

$smmHelper = new SmugmugHelper();
$album = $smmHelper->getAlbum('FXzQcV');

现在,当我尝试从那些ENDPOINTS中获取数据时,它在我的本地服务器中工作得很好,但是在我的prod服务器中只是第一次获取工作,但第二次没有。

我尝试跳过第一次获取并硬编码我从第一次获得的相同URL

...
// this fetch doesn't work on prod but it does on local
$this->oauth_client->fetch("Hardcoded URL", $parameters, $method, array('Accept' => 'application/json'));
...

它只能做一个电话。

我不知道还能做什么。

我的本地服务器是Apache2,php版本7.1.3,启用了OAuth扩展。

我的生产服务器由greengeeks.com托管,并且启用了支持OAuth扩展的PHP 7.1版。

如果有更多信息我可以提供。

答案

好吧,我想出来了。我的prod服务器在PHP v.7.0和OAuth扩展v.2.0.2上遇到了麻烦。

我尝试使用相同的PHP和扩展版本的另一台服务器,它就像一个魅力。

以上是关于PHP OAuth :: fetch()在第二次连续调用时返回错误请求的主要内容,如果未能解决你的问题,请参考以下文章

用于获取数据的自定义反应钩子在第二次点击时未提供数据

React 登录错误消息在第一次调用时返回未定义,然后在第二次调用时显示错误

React - 实现fetch取消、中止请求

Netsuite - REST API (restlet) - 创建记录导致 INVALID_LOGIN_ATTEMPT 在第二次和更多记录请求失败

jQuery 提交仅在第二次点击后工作

只能在第二次单击时复制到剪贴板