如何通过 OAuth 客户端身份验证找到用户 YouTube 频道?
How do I find a users YouTube channel from OAuth client authentication?
对于我正在构建的应用程序,我希望最终用户使用 gapi
OAuth2
和
从那里我希望该应用程序在他们的 YouTube 频道上查找播放列表
并加载它。
getAuthInstance
方法 returns 具有 Google 用户名的对象。然而
对于我自己的特定用户名,通过用户名查找频道 ID 的查询
returns 没有结果。从某些 看来,这显然是个问题
使用某些 YouTube 帐户。
这个问题有解决办法吗?
如果您拥有有效的 OAuth 2.0 authentication/authorization(例如,通过使用 GAPI
获得),那么使用 Channels.list
API 使用参数 mine=true
:
查询的端点
mine
(boolean)
This parameter can only be used in a properly authorized request. Set this parameter's value to true to instruct the API to only return channels owned by the authenticated user.
调用端点后,属性 id
of the returned Channels
resource 包含经过身份验证的用户的频道 ID。
关于 Javascript GAPI
(即 Google 的 Browser-side JavaScript 的客户端库)实现,代码如下所示下面(为了更广泛的上下文,请查看 Google 中的示例源文件:analytics_codelab.js
):
var channelId;
function loadAPIClientInterfaces() {
gapi.client.load('youtube', 'v3', function() {
getUserChannel();
});
}
function getUserChannel() {
var request = gapi.client.youtube.channels.list({
part: 'id',
fields: 'items(id)',
mine: true
});
request.execute(function(response) {
if ('error' in response) {
displayMessage(response.error.message);
} else {
channelId = response.items[0].id;
}
});
}
请注意,上面的代码(与 analytics_codelab.js
中的代码不同)使用 fields
请求参数从 Channels.list
端点仅获取频道的 ID 信息(这总是好的仅从 API 询问实际使用的信息)。
对于我正在构建的应用程序,我希望最终用户使用 gapi
OAuth2
和
从那里我希望该应用程序在他们的 YouTube 频道上查找播放列表
并加载它。
getAuthInstance
方法 returns 具有 Google 用户名的对象。然而
对于我自己的特定用户名,通过用户名查找频道 ID 的查询
returns 没有结果。从某些
这个问题有解决办法吗?
如果您拥有有效的 OAuth 2.0 authentication/authorization(例如,通过使用 GAPI
获得),那么使用 Channels.list
API 使用参数 mine=true
:
mine
(boolean)
This parameter can only be used in a properly authorized request. Set this parameter's value to true to instruct the API to only return channels owned by the authenticated user.
调用端点后,属性 id
of the returned Channels
resource 包含经过身份验证的用户的频道 ID。
关于 Javascript GAPI
(即 Google 的 Browser-side JavaScript 的客户端库)实现,代码如下所示下面(为了更广泛的上下文,请查看 Google 中的示例源文件:analytics_codelab.js
):
var channelId;
function loadAPIClientInterfaces() {
gapi.client.load('youtube', 'v3', function() {
getUserChannel();
});
}
function getUserChannel() {
var request = gapi.client.youtube.channels.list({
part: 'id',
fields: 'items(id)',
mine: true
});
request.execute(function(response) {
if ('error' in response) {
displayMessage(response.error.message);
} else {
channelId = response.items[0].id;
}
});
}
请注意,上面的代码(与 analytics_codelab.js
中的代码不同)使用 fields
请求参数从 Channels.list
端点仅获取频道的 ID 信息(这总是好的仅从 API 询问实际使用的信息)。