在用户身份验证上从Vimeo API获取错误“invalid_client”

时间:2017-03-10 15:32:36

标签: php vimeo

我正在尝试通过Vimeo对用户进行身份验证,以便在网站上查看他们的视频列表。

我在使用Vimeo php库https://github.com/vimeo/vimeo.php时将错误包含在我的代码中时没有错误。

我获得了身份验证网址,并且能够导航到Vimeo上的“允许APP访问”页面,当我点击“允许”时,我的重定向页面上出现“invalid_client”错误,即使他们发回了代码$ _GET。

在这一点上我完全感到困惑,因为我已经有了官方的API库,据我所知,APP设置正确。我希望有人能够指出我正确的方向,为什么我会收到这个错误以及如何解决它!

我的代码:

//init Vimeo
require_once("modules/classes/Vimeo/autoload.php");
$lib = new \Vimeo\Vimeo($vimeo_id, $vimeo_secret, $vimeo_access);

if(!isset($_SESSION['vstate'])){
    $_SESSION['vstate'] = base64_encode(openssl_random_pseudo_bytes(30));
}
$vimeo_authurl = $lib->buildAuthorizationEndpoint($redirecturi,'public private',$_SESSION['vstate']);

if(isset($_GET['code'])){

    echo "Code returned: ".$_GET['code'];

    if ($_SESSION['vstate'] != $_GET['state']) {
        echo 'Something is wrong. Vimeo sent back a different state than this script was expecting. Please let an administrator know that this has happened.';
    }

    $tokens = $lib->accessToken($_GET['code'], $redirecturi);
    if ($tokens['status'] == 200) {
        echo 'Vimeo account successfully connected!';
        $_SESSION['access_token'] = $tokens['body']['access_token'];
        $lib->setToken($token['body']['access_token']);
    } else {
        echo 'Sorry, we were unable to connect to your Vimeo account due to the following error:<br/>{'.$tokens['body']['error']."} ".$tokens['body']['error_description'];
    }

    echo "<br/><br/><pre>";
    print_r($tokens);
    echo "</pre>";

    exit();

}

print_r($ tokens)给出了这个:

Array
(
[body] => Array
    (
        [error] => invalid_client
        [error_description] => A valid client ID must be provided along with any request made to Vimeo's API
    )

[status] => 400
[headers] => Array
    (
        [Server] => nginx
        [Content-Type] => application/json
        [Expires] => Fri, 10 Mar 2017 03:11:17 GMT
        [Cache-Control] => no-store
        [Strict-Transport-Security] => max-age=15552000; includeSubDomains; preload
        [Pragma] => no-cache
        [X-UA-Compatible] => IE=edge
        [X-XSS-Protection] => 1; mode=block
        [X-Content-Type-Options] => nosniff
        [X-Frame-Options] => sameorigin
        [Content-Security-Policy-Report-Only] => default-src https: data: blob: 'unsafe-inline' 'unsafe-eval'; report-uri /_csp
        [Accept-Ranges] => bytes
        [Via] => 1.1 varnish
        [Fastly-Debug-Digest] => 5da2a3ac863afd5f2ad0963779e0dbc4c54c7d97d19f87fd227c5eb8c92bd621
        [Content-Length] => 126
        [Date] => Fri, 10 Mar 2017 15:11:17 GMT
        [Connection] => keep-alive
        [X-Served-By] => cache-iad2146-IAD, cache-ord1731-ORD
        [X-Cache] => MISS, MISS
        [X-Cache-Hits] => 0, 0
        [X-Timer] => S1489158677.346607,VS0,VE55
        [Vary] => Accept,Vimeo-Client-Id,Accept-Encoding,User-Agent
    )
)

1 个答案:

答案 0 :(得分:1)

所以我不确定为什么,但我创建了一个具有相同细节的新APP,这个新的APP似乎认证很好。

第一个APP我遇到麻烦,我最初发送了一个上传访问请求,但被拒绝(由于本地测试链接),所以这可能是“invalid_client”错误的根本问题。