【问题标题】:When implementing Google API sample, can't get past OAuth 2.0实施 Google API 示例时,无法通过 OAuth 2.0
【发布时间】:2018-07-25 02:13:43
【问题描述】:

我正在尝试使用 PlaylistItems: insert YouTube Data API sample 通过 PHP 以编程方式将 YouTube 视频添加到播放列表。

我将示例托管在 https://[mydomain].com/custom/yt/insert.php 并在该目录中运行提供的 composer 命令,以按照说明安装 api 客户端。

我在 API 控制台中将 OAuth 重定向地址设置为 https://[mydomain].com/custom/yt/insert.php,并下载了 secrets.json 文件并将其托管在同一目录中。

当我在浏览器中运行 insert.php 脚本时,我会进入一个页面,其中包含以下内容:

Open the following link in your browser: https://accounts.google.com/o/oauth2/auth?response_type=code&access_type=offline&client_id=194988007367-cnn3jdo0c4j6njsvorpcv1s5jdhej6iu.apps.googleusercontent.com&redirect_uri=https%3A%2F%2Fdjpanaflex.com%2Fcustom%2Fyt%2Finsert.php&state&scope=https%3A%2F%2Fwww.googleapis.com%2Fauth%2Fyoutube.force-ssl&approval_prompt=auto Enter verification code:

没有提供验证码,但是当我访问该网址时,我会完成身份验证过程,并且似乎成功完成了。

但是,将视频添加到播放列表的 API 调用并未执行:

playlistItemsInsert($service,
array('snippet.playlistId' => '[PLAYLIST ID OMITTED]',
       'snippet.resourceId.kind' => 'youtube#video',
       'snippet.resourceId.videoId' => '[VIDEO ID OMITTED]',
       'snippet.position' => ''),
'snippet', 
array('onBehalfOfContentOwner' => ''));

相反,我返回到提示我完成授权过程的页面。

为什么没有进行我的 API 调用?我的 OAuth 2.0 身份验证没有被存储吗?如果是这样,我该如何纠正?

【问题讨论】:

    标签: php oauth-2.0 google-api google-oauth


    【解决方案1】:

    事实证明,Google 的示例设计为从 CLI 运行,而我基于浏览器的实现没有提供提示用户输入的方法,该输入由 getClient() 函数中的一行调用,该函数从STDIN.

    由于身份验证代码作为$authUrl 变量中的参数提供,该变量在脚本第一次运行时打印到屏幕上,因此我能够通过替换解决我的问题

    $authCode = trim(fgets(STDIN));

    与:

    $authCode = $_GET['code'];

    【讨论】:

      猜你喜欢
      • 2014-11-16
      • 2012-03-06
      • 2015-10-02
      • 1970-01-01
      • 1970-01-01
      • 2012-09-07
      • 2022-07-30
      • 2018-04-19
      • 2013-01-28
      相关资源
      最近更新 更多