我想使用 vimeo API 的 the authorization code grant
来获取访问令牌。这就是我尝试为文档的 Step 1 生成 code
的方式:
$client_id = 'xxxx';
$client_secret = 'yyyyy';
$redirect_uri = 'http://localhost/somepath';
$scopes = 'private';
$state = 'randomcharstring';
$lib = new \Vimeo\Vimeo($client_id, $client_secret);
$url = $lib->buildAuthorizationEndpoint($redirect_uri, $scopes, $state);
当我运行代码时,它给了我这个网址:
https://api.vimeo.com/oauth/authorize?response_type=code&client_id=xxxx&redirect_uri=localhost/somepath&scope=private&state=randomcharstring1
对应于文档的 Step 3。当我运行 URL 链接时,我被重定向到 vimeo oath/authorize 以允许用户使用 vimeo 或其他东西。
另一个重定向到我的本地主机:
http://localhost/somepath?state=randomcharstring1&code=zzzzzzzzzz
之后,我使用带有 POST 方法的 POSTMAN 尝试使用基于 Step 4 的以下代码获取访问令牌:
URL: https://api.vimeo.com/oauth/access_token
Headers:
Authorization: basic base64_encode(xxxx:yyyyy)
Content-Type: application/json
Accept: application/vnd.vimeo.*+json;version=3.4
Body:
{
"grant_type": "authorization_code",
"code": "zzzzzzzzzz",
"redirect_uri": "http://localhost/somepath"
}
但我总是收到这个错误:
{
"error": "invalid_client",
"error_description": "A valid client ID must be provided along with any request made to Vimeo's API"
}
注意:uri 不是这种格式,它有 http%3A
等只是为了便于阅读。