Vimeo API - 使用 WP HTTP API 生成未经身份验证的令牌

Vimeo API - generate unauthenticated token with WP HTTP API

我正在尝试 get an unauthenticated token from Vimeo's current API v3,以便使用它在我自己的网站上获取我自己的视频的简单列表。我正在使用 WordPress HTTP API 函数 'wp_remote_post' 生成正确的 http 请求。

根据 Vimeo 的说法,这是执行此操作的正确方法,它是通过 POST 请求完成的。以下是参数:

HTTP Method: POST
HTTP URL: api.vimeo.com/oauth/authorize/client
HTTP Headers: Authorization: basic, base64_encode( "$client_id: $client_secret" )
Request Body: grant_type=client_credentials&scope=public%20private

得到

[body] => {"error":"You must provide a valid authenticated access token."}
[raw] => HTTP/1.1 401 Authorization Required

为什么 Vimeo 在明确未经身份验证的调用上要求提供有效的经过身份验证的访问令牌?我已经从我的 Vimeo 应用程序中提供了实际的客户端 ID 和客户端密码,使用 Vimeo 的说明 receive 一个 unauthenticated 访问令牌。我正在从本地环境发送请求。

我检查了类似的问题 并遵循了其中列出的所有内容。没有骰子,我已经尝试这样做了几个小时。

Vimeo API 似乎只接受参数作为查询字符串的一部分,而不是 HTTP POST 对象的一部分('body'、'data' 或其他)。

只有当我将参数直接编码到 URL,而不是将它们作为参数传递到 post 对象时,post 才起作用。

作品:

$url = 'https://api.vimeo.com/oauth/authorize/client?grant_type=client_credentials&scope=public%20private';
$auth = base64_encode( $developer_key . ':' . $secret_key );
$headers = array(
                'Authorization' => 'Basic ' . $auth,
                'Content-Type' => 'application/json'
            );
$args = array(
                'headers'     => $headers
            );
$response = wp_remote_post( $url, $args );

不工作:

$url = 'https://api.vimeo.com/oauth/authorize/client';
$auth = base64_encode( $developer_key . ':' . $secret_key );
$data = array(
 'grant_type' => 'client_credentials',
 'scope' => 'public private'
);
$headers = array(
    'Authorization' => 'Basic ' . $auth,
    'Content-Type' => 'application/json'
);
$args = array(
    'headers'     => $headers,
    'data'        => $data
);

嗯。 As of WordPress 4.6, the WP_HTTP class is now built on Requests 作者:Ryan McCue。

所以看来我的问题实际上也是关于 wp_remote_post() 如何构造请求的问题。似乎没有办法将参数传递给函数并在 URL.

中将它们字符串化