php - 如何使用 Twitter V2 API 调用电话

标签 php twitter oauth twitter-oauth

我使用下面的代码通过查询参数搜索推文。这适用于 Twitter V1 API,但不适用于 V2,在广泛阅读了他们的 API 文档后,我很困惑。

我的第一个问题是,V1 和 V2 是否共享相同的身份验证?即,假设我的端点 url 正确,我可以使用此代码调用 V2,这会导致第二个问题,如果我可以使用与 V1 相同的身份验证调用 V2,那么正确的端点是什么?到目前为止,显着的区别是查询参数,V1 为“q”,V2 为“query”。那么显然不需要 .json,但我在 V2 端点的末尾尝试了这两种方法,但仍然得到相同的错误:

stdClass Object ( [client_id] => 131XXXXXX [detail] => When authenticating requests to the Twitter API v2 endpoints, you must use keys and tokens from a Twitter developer App that is attached to a Project. You can create a project via the developer portal. [registration_url] => https://developer.twitter.com/en/docs/projects/overview [title] => Client Forbidden [required_enrollment] => Standard Basic [reason] => client-not-enrolled [type] => https://api.twitter.com/2/problems/client-forbidden )
    include ($_SERVER["DOCUMENT_ROOT"] . "/TwitterAPIExchange.php");
     
    $settings = array(
        'oauth_access_token' => "xxx",
        'oauth_access_token_secret' => "xxx",
        'consumer_key' => "xxx",
        'consumer_secret' => "xxx"
    );
    
    //$url = "https://api.twitter.com/1.1/search/tweets.json";
    
    $url = "https://api.twitter.com/2/tweets/search/recent";
    
    $requestMethod = "GET";
    
    // V1
    //$getfield = '?q=bitcoin';
    
     // V2
    $getfield = '?query=bitcoin';
     
    $twitter = new TwitterAPIExchange($settings);
    $response = $twitter->setGetfield($getfield)
                        ->buildOauth($url, $requestMethod)
                        ->performRequest();
     
    $tweets = json_decode($response);
      
    print_r($tweets);

编辑:

看起来 V1 和 V2 可以共享相同的身份验证:https://developer.twitter.com/en/docs/twitter-api/tweets/search/migrate/standard-to-twitter-api-v2

OAuth 1.0a 用户上下文和 OAuth 2.0 承载 token 身份验证 v1.1 搜索/推文和 Twitter API v2 最近搜索端点支持 OAuth 1.0a 用户上下文和 OAuth 2.0 承载 token 。 因此,如果您之前使用标准 v1.1 搜索端点,则在迁移到 Twitter API v2 版本后可以继续使用相同的身份验证方法。

最佳答案

首先,您必须将您正在使用的应用添加到开发人员仪表板上的“项目”中。为了能够调用 v2 端点,此步骤是必需的,请参阅:https://developer.twitter.com/en/docs/projects/overview

我从 Twitter 社区论坛得到了这个答案,现在它可以与上面我的问题中发布的代码一起正常工作。

关于php - 如何使用 Twitter V2 API 调用电话,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67242091/

相关文章:

php - 使用 laravel 在字段模式迁移中定义属性 zerofill 和大小

php - 将整数转换为笛卡尔坐标的替代/更快方法?

安卓 : Any open source Android twitter client application?

facebook oauth,没有基本权限的图片

php - PHP 文档中的 Doxygen 和 "self"关键字

php - Laravel SQL 按 WHERE IN Group By 更新行

python - Unicode解码错误: 'ascii' codec can't decode byte 0xe2 in position 139: ordinal not in range(128)

javascript - 社交媒体分享按钮

Facebook 登录按钮与。 OAuth 对话框

spring - 模拟 OAuth 服务器进行测试