批准后如何使Github应用程序连接



我们有一个可以安装在存储库上的GitHub应用程序。这使用GitHub应用程序授权流返回一个installation_id,我们使用它将web应用程序上的用户帐户与其GitHub存储库关联起来。在这种情况下,我们得到一个回调到url:/callback?setup_action=install&installation_id=<installation_id>

这通常工作得很好,但在某些情况下,授权流不能在单个步骤中完成。在许多GitHub组织中,安装应用程序需要得到管理员的批准。在这些情况下,我们不会立即得到url中的installation_id,而是一个请求状态:/callback?setup_action=request,一旦管理员批准,我们得到installation_id

在这种情况下,由于审批步骤是由不同的用户完成的,我们没有web应用程序会话来将用户与此installation_id关联。当批准授权时,是否有办法识别原始请求的用户/帐户?

您考虑过保存状态吗?https://docs.github.com/en/apps/maintaining-github-apps/installing-github-apps preserving-an-application-state-during-installation

你可以这样保存userId/account:

https://github.com/apps/<app name>/installations/new?state=<userId>

一旦设置完成,state参数将包含在回调中,如下所示:

https://yourapplication.com/?installation_id=<number>&setup_action=install&state=<userId>