You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

能否通过YouTube API获取频道会员?Discord应用开发求助

实现Discord服务器仅允许YouTube频道会员加入的方案

核心API说明

你要找的YouTube会员验证接口是YouTube Data API v3中的Members.list端点,这个接口可用于查询用户是否为指定频道的会员。之前没找到大概率是没注意到需要配置特定的OAuth权限。

具体实现步骤

1. 配置Google Cloud与YouTube API权限

  • 登录Google Cloud Console,创建项目并启用YouTube Data API v3
  • 创建OAuth 2.0客户端ID(需用户授权才能读取其会员信息)
  • 申请youtube.channelMemberships.read权限,这是读取用户会员身份的必要权限

2. 实现会员验证流程

  • 在Discord应用中添加验证入口,引导用户跳转至Google OAuth授权页面,请求上述权限
  • 用户授权成功后获取访问令牌,调用Members.list接口:
    • 使用mine=true参数获取当前授权用户加入的所有会员频道列表
    • 检查返回结果中是否包含你的目标频道ID,以此判断用户是否为会员

3. 与Discord集成联动

  • 先通过Discord OAuth2获取用户的Discord ID
  • 验证通过后,调用Discord API为该用户添加允许加入服务器的专属角色(需确保你的Discord机器人拥有管理角色的权限)
  • 将服务器设置为仅持有该角色的用户可加入,完成权限控制

代码示例(Node.js)

const { google } = require('googleapis');
const discordApi = require('./discord-api-client'); // 自定义Discord API客户端

// 验证用户是否为目标频道会员
async function verifyYoutubeMember(accessToken, targetChannelId) {
  const youtube = google.youtube({ version: 'v3', auth: accessToken });
  try {
    const res = await youtube.members.list({
      part: 'snippet',
      mine: true
    });
    return res.data.items.some(item => item.snippet.channelId === targetChannelId);
  } catch (err) {
    console.error('会员验证失败:', err);
    return false;
  }
}

// 验证通过后为Discord用户添加角色
async function grantDiscordRole(discordUserId, roleId) {
  await discordApi.addGuildMemberRole('你的服务器ID', discordUserId, roleId);
}

注意事项

  • Members.list接口有调用配额限制,需合理控制请求频率
  • 需处理OAuth访问令牌过期问题,通过刷新令牌维持会话
  • 用户必须登录YouTube账号并完成授权,才能验证其会员身份

内容的提问来源于stack exchange,提问作者user48118

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.19 11:02:37