xero-api - 我可以用 Xero OAuth2 身份验证的子域覆盖回调 url
问题描述
我有一个 Rails 应用程序,它使用新的 OAuth2 身份验证访问 Xero,我们使用子域来隔离不同的组织。例如https://domain.example.com
迄今为止,我们必须为每个域创建一个新的 Xero 应用程序,因为我们必须为应用程序指定回调 url,在上面的例子中是https://domain.example.com/auth/xero_oauth/callback
是否可以使用https://example.com/auth/xero_oauth/callback的回调 URL 向 Xero 注册单个应用程序,然后在连接阶段覆盖 URL,添加子域。
我相当确定我可以使用以前的 OAuth1 版本来做到这一点。
解决方案
我也有这个要求,但这不是我第一次遇到 OAuth 应用程序的这个问题。
我通过将子域添加到state
传递给初始授权步骤的参数来解决它,并传递回重定向 URI:
$state = json_encode(['uuid' => $uuid, 'subdomain' => $subdomain]);
然后在我的重定向 URI 中,我从状态中提取子域,并与 UUID 一起执行另一个重定向到该子域(以执行 CSRF 检查)。
这种方法的缺点是状态只会在成功时传递回来。如果 OAuth 流程遇到错误,您的重定向 URI 将无法确定正确的子域。
编辑:结果 Xero 确实返回状态,无论成功或失败:)
推荐阅读
- c++ - C++20 指定初始值设定项 char[]
- oracle - Oracle中如何将两行或多行转换为列
- r - caret::confusionMatrix 迭代计算列联表,但未能创建confusionMatrix对象
- meteor - Meteor 中服务器端代码的最佳实践是什么?
- android - 使用后台服务 Android 获取当前位置
- python-3.x - 使用 tkinter 时在 Google Colab 中设置 $DISPLAY 环境变量
- vim - vimscript: map x "xx if register not specified
- asp.net-core - Blazor wasm 新项目无法识别 Radzen Nuget Pkg
- excel - 比较 Excel 单列中价格列表中的数字 - 并发现数字何时较低而不是较高
- c - 动态数组中的realloc vs memcpy,如C中的向量