4

我对 Stack Overflow 还很陌生,所以如果我做错了什么,请告诉我;

我已经使用 Google+ API 设置了我的网站 - 要登录,人们单击“使用 Google+ 登录”按钮并登录。

这一切都很好,但我想知道是否可以将此登录过程与 YouTube API 集成,以便当用户单击按钮登录时,我还可以收集 YouTube 信息。

我已经在 Google API 控制台上设置了 YouTube 分析和数据 API,我只需要一个代码片段来存储 YouTube 用户名。

预期行为:

  1. URL 为“youtube.com/some-user”的用户使用 Google+ 登录
  2. Google+ 身份验证密钥被输入到一些脚本中
  3. 脚本连接到 YouTube API 并返回用户名(例如 $youtube_user = 'some-user')
  4. 我的网站获取此信息并继续执行脚本
4

2 回答 2

3

您可以使用YouTube API执行此操作。您需要做的是为您的登录按钮添加一个额外的范围。我建议您使用以下范围:

https://www.googleapis.com/auth/youtube.readonly

这样做是因为您不会管理任何人的 YouTube 帐户,而只是查看他们的个人数据(例如,为他们的 YouTube 视频提取链接或嵌入代码)。

接下来,您需要使用客户端库对 YouTube 执行 API 调用。对于实验,您可以使用 API explorer。要查看您自己的信息,请授权请求,将部分设置为“片段”(无引号),然后将我的设置为 true。

从PHP Google API 客户端库下载“youtube”、“v3”静态类,然后调用传递代码片段作为您想要的部分,并将“mine”设置为 true。

为了列出当前用户的视频,PHP 客户端库附带了一个示例。以下更改将列出用户的活动:

  // Exchange the OAuth 2.0 authorization code for user credentials.         
  $client->authenticate($code);                                              
  $token = json_decode($client->getAccessToken());

  ...                         

  $activities = $youtube->activities->listActivities('snippet', array(       
    'mine' => 'true',                                                        
  ));

  foreach ($activities['items'] as $activity) {                              
    error_log(serialize($activity));                                         
  }            
于 2013-05-02T06:26:54.047 回答
1

类的答案在获取 OAuth 2 凭据以发出请求方面是正确的。就实际的 PHP 代码而言,您可以使用此示例作为起点(使用此客户端库),并将第 40 行修改为

$channelsResponse = $youtube->channels->listChannels('snippet', array(
  'mine' => 'true',
));

然后您可以通过 访问频道的标题$channelsResponse['items'][0]['snippet']['title']。请注意,可以将 Google+ 帐户和 YouTube 频道关联起来,如果这样做了,则频道的标题将与 Google+ 帐户的显示名称相同。如果这是一个未链接的 YouTube 频道,则会返回该频道的旧用户名。

于 2013-05-02T18:34:03.823 回答