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

如何在GitHub应用获批准后识别原请求用户?

解决GitHub应用审批后关联原请求用户的方案

以下是几个可行的实现思路:

1. 利用OAuth授权的state参数传递用户标识

  • 发起GitHub应用安装请求时,在授权URL的state参数中加入加密后的Web应用用户唯一ID(比如用户UUID,避免明文泄露)。GitHub会在所有回调请求中原样返回这个state值。
  • 当收到/callback?setup_action=request时,提取state解密得到用户ID,同时记录GitHub返回的installation_request_id,将两者关联存储(比如存入数据库)。
  • 管理员审批完成后,GitHub会触发带有installation_id和原state的回调请求,或者通过Webhook推送安装完成事件。此时通过state找到原用户,完成installation_id与用户账号的绑定。

2. 监听GitHub Webhook事件关联用户

  • 为你的GitHub App配置installation_request和installation两类Webhook事件:
    • 用户发起安装请求时,GitHub会发送installation_request事件,其中包含sender字段(发起请求的GitHub用户信息)和installation_request_id。
    • 管理员批准后,会触发installation事件,事件数据里包含installation_id和对应的installation_request_id。
  • 收到installation_request事件时,将sender.id(GitHub用户ID)与installation_request_id绑定,同时关联到Web应用中已存在的用户账号(前提是用户已完成过基础OAuth授权,Web应用存储了GitHub用户ID与自身用户的映射关系)。
  • 收到installation事件时,通过installation_request_id找到对应的原用户,完成installation_id的关联绑定。

3. 预关联用户的GitHub身份

  • 在用户发起应用安装流程前,先引导用户完成GitHub OAuth授权,获取用户的GitHub身份信息(如用户ID),并将其与Web应用的用户账号绑定存储。
  • 当收到setup_action=request的回调时,记录installation_request_id并关联到该用户的GitHub ID。
  • 审批完成后,通过Webhook的installation事件中的installation_request_id,找到对应的GitHub用户ID,进而关联到Web应用的用户账号。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.06 13:50:32