如何使用Google的OAuth API获取用户的API密钥?

时间:2018-07-31 00:14:11

标签: php youtube-api youtube-data-api

也许我不明白Youtube Data API应该如何工作。但是,如果我有一个将生成oauth请求并接收回调(我有)的PHP应用程序,则它发送回的数据不是用户的API密钥。

所以我不知道我做错了什么还是什么,但是他们的文档让我头疼,而且我进行了搜索,甚至不知道我的过程是否正确:

Web服务器/ OAuth请求(php)

require_once 'vendor/autoload.php';

$client = new Google_Client();
$client->setAuthConfig('oauth.json');
$client->setAccessType("offline");        // offline access
$client->setIncludeGrantedScopes(true);   // incremental auth
$client->addScope(Google_Service_YouTube::YOUTUBE_READONLY);
$client->setRedirectUri('http://' . $_SERVER['HTTP_HOST'] . '/oauth2callback.php');

$auth_url = $client->createAuthUrl();
header('Location: ' . filter_var($auth_url, FILTER_SANITIZE_URL));

客户授权我的申请

Google发回邮件(无论这是什么)

  'code' => string 'BLABLABLABLABLA' (length=89)
  'scope' => string 'https://www.googleapis.com/auth/youtube.readonly https://www.googleapis.com/auth/plus.me https://www.googleapis.com/auth/youtube https://www.googleapis.com/auth/userinfo.email https://www.googleapis.com/auth/userinfo.profile' (length=224)

用户的API密钥在哪里,如何获取?这是不正确的,还是我只是在这里堆东西?

2 个答案:

答案 0 :(得分:3)

使用OAuth时没有API密钥。您将获得一个访问令牌。 API密钥是从用户的Google开发者控制台获取的。

检查PHP Quickstart以获得PHP中的Youtube API OAuth快速参考。

答案 1 :(得分:0)

您的oauth2callback.php应该看起来像这样。它将获取代码并将其交换为访问令牌。

require_once __DIR__ . '/vendor/autoload.php';
require_once __DIR__ . '/Oauth2Authentication.php';
// Start a session to persist credentials.
session_start();
// Handle authorization flow from the server.
if (! isset($_GET['code'])) {
    $client = buildClient();
    $auth_url = $client->createAuthUrl();
    header('Location: ' . filter_var($auth_url, FILTER_SANITIZE_URL));
} else {
    $client = buildClient();
    $client->authenticate($_GET['code']); // Exchange the authencation code for a refresh token and access token.
    // Add access token and refresh token to seession.
    $_SESSION['access_token'] = $client->getAccessToken();
    $_SESSION['refresh_token'] = $client->getRefreshToken();    
    //Redirect back to main script
    $redirect_uri = str_replace("oauth2callback.php",$_SESSION['mainScript'],$client->getRedirectUri());    
    header('Location: ' . filter_var($redirect_uri, FILTER_SANITIZE_URL));
}

我在github上的示例项目中摘录了代码