使用Octokit调用GitHub OAuth应用执行操作后,如何显示应用名称而非用户名?
解决GitHub操作显示个人用户名而非OAuth应用名称的问题
你遇到的问题根源在于:当前使用的是个人身份的访问令牌(不管是个人访问令牌还是OAuth用户授权令牌),这类令牌代表的是你的个人账号,所以所有操作都会关联到你的用户名anmol-kumar0815。要让操作显示应用名称AutomatedApp,你需要改用GitHub App的安装访问令牌,以应用自身身份执行操作。
具体解决步骤
1. 替换OAuth应用为GitHub App
传统的GitHub OAuth应用无法以应用身份执行修改类操作(比如给Issue加标签),这类操作会默认绑定到授权用户。你需要创建一个GitHub App:
- 进入GitHub设置 → Developer settings → GitHub Apps → 点击
New GitHub App - 填写应用名称为
AutomatedApp,并配置所需权限(比如给Issues模块勾选读写权限) - 将创建好的App安装到目标仓库中
2. 生成GitHub App的安装访问令牌
GitHub App需要通过临时的安装令牌来调用API,生成方式如下:
require "octokit" require "jwt" require "openssl" # 替换为你的GitHub App信息 APP_ID = "你的App ID(在App设置页面查看)" PRIVATE_KEY_PATH = "下载的App私钥PEM文件路径" INSTALLATION_ID = "应用安装到仓库的ID(在安装页面查看)" # 生成JWT令牌,用于认证GitHub App身份 payload = { iat: Time.now.to_i, exp: Time.now.to_i + 600, # 令牌有效期10分钟,需定期刷新 iss: APP_ID } private_key = OpenSSL::PKey::RSA.new(File.read(PRIVATE_KEY_PATH)) jwt_token = JWT.encode(payload, private_key, "RS256") # 创建App客户端,获取安装访问令牌 app_client = Octokit::Client.new(bearer_token: jwt_token) installation_token = app_client.create_installation_access_token(INSTALLATION_ID)[:token] # 使用安装令牌初始化操作客户端 def client @_client ||= Octokit::Client.new(bearer_token: installation_token, auto_paginate: true) end
3. 执行操作
之后调用client.add_label等方法时,GitHub就会显示AutomatedApp added a label.,因为此时操作是通过GitHub App的身份发起的。
核心区别
- 个人访问令牌/OAuth用户令牌:代表你的个人账号,操作记录显示个人用户名
- GitHub App安装令牌:代表应用本身,操作记录显示应用名称
内容的提问来源于stack exchange,提问作者Anmol Shrivastav
相关产品推荐
相关产品推荐

