我有一个Rails应用程序,它使用新的OAuth2身份验证访问Xero,我们使用子域来隔离不同的组织。 例如 https://domain.example.com
到目前为止,我们必须为每个域创建一个新的 Xero 应用程序,因为我们必须指定应用程序的回调 URL,在上述情况下,该回调 URL 将是 https://domain.example.com/auth/xero_oauth/callback
是否可以使用回调 URL https://example.com/auth/xero_oauth/callback 向 Xero 注册单个应用程序,然后在连接阶段覆盖该 URL,添加子域。
我相当确定我可以用以前的OAuth1版本做到这一点。
我也有这个要求,但这不是我第一次在 OAuth 应用程序中遇到这个问题。
我通过将子域添加到传递到初始授权步骤并传递回重定向 URI 的state
参数来解决此问题:
$state = json_encode(['uuid' => $uuid, 'subdomain' => $subdomain]);
然后在我的重定向 URI 中,我从状态中提取子域,并与 UUID 一起执行另一个重定向到该子域(以执行 CSRF 检查(。
编辑:事实证明,无论成功还是失败,Xero都会返回状态:)
这是一个有趣的用例。很确定我们不允许在回调 URL 中使用通配符子域,并且每个应用程序的限制为 3 个。但我下周会检查!您是否创建了带有 api@xero.com 的工单?此外,如果您在 Ruby SDK 上遇到问题,我可以尽快尝试为您排序。
大声思考这个问题......也许可以走到回调url前面......尽管可能会导致Xero客户端生成出现问题,因为它需要匹配/myapps中的OAuth2.0设置。 您能否重定向回您的根域只是为了身份验证,然后将他们踢到他们的子域成功?