【问题标题】:Vimeo API - generate unauthenticated token with WP HTTP APIVimeo API - 使用 WP HTTP API 生成未经身份验证的令牌
【发布时间】:2016-11-03 20:04:56
【问题描述】:

我正在尝试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 的说明来接收一个未经身份验证的访问令牌。我正在从本地环境发送请求。

我检查了类似的问题How to generate Vimeo unauthenticated access token? 并遵循了那里列出的所有内容。没有骰子,我已经尝试了好几个小时。

【问题讨论】:

  • Bwahaha - 开车投反对票?我不这么认为。之前的问答完全没有回答我的问题。我已经研究这个问题 6 个小时了!

标签: php python-requests vimeo vimeo-api


【解决方案1】:

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,WP_HTTP 类现在由 Ryan McCue 基于 Requests 构建。

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

【讨论】:

    猜你喜欢
    • 2016-02-10
    • 2015-03-01
    • 2019-07-20
    • 1970-01-01
    • 1970-01-01
    • 2016-09-06
    • 2020-11-04
    • 1970-01-01
    • 2019-09-25
    相关资源
    最近更新 更多