Flutter Android端对接Salesforce OAuth授权回调URL问题咨询
解决方案
1. Android端捕获HTTPS回调并内部处理(无需搭建站点)
你可以通过Android App Links或自定义Intent Filter让系统直接将Salesforce的HTTPS重定向请求导向你的应用,而非打开浏览器访问站点,具体步骤如下:
- 保留已在Salesforce连接应用中配置的HTTPS回调URL(比如
https://yourapp.example.com/callback),确保该域名归你所有,用于后续App Links验证。 - 在AndroidManifest.xml中,给处理OAuth回调的Activity添加
intent-filter,声明应用可处理该HTTPS URL:
<activity android:name=".OAuthCallbackActivity"> <intent-filter android:autoVerify="true"> <action android:name="android.intent.action.VIEW" /> <category android:name="android.intent.category.DEFAULT" /> <category android:name="android.intent.category.BROWSABLE" /> <data android:scheme="https" android:host="yourapp.example.com" android:path="/callback" /> </intent-filter> </activity>
- 在你的域名的
.well-known目录下上传assetlinks.json文件,内容包含应用包名和签名指纹,示例如下:
[{ "relation": ["delegate_permission/common.handle_all_urls"], "target": { "package_name": "com.yourapp.package", "sha256_cert_fingerprints": ["你的应用签名SHA256指纹"] } }]
- 在
OAuthCallbackActivity中,从Intent里提取回调URL的参数(如授权码code),通过MethodChannel将数据传递给Flutter端的oauth2_client,完成授权码流程的后续步骤。
2. 替代方案:自定义Schema配合Salesforce特殊配置
你可以联系Salesforce支持,申请允许将自定义Schema作为回调URL(比如yourapp://oauth/callback)。若获批,可直接在oauth2_client中配置该自定义Schema,无需处理HTTPS跳转。但此方案依赖Salesforce的权限开放,通用性不如第一种方案。
3. 备选:使用Salesforce官方移动SDK
如果不想自行处理OAuth流程,可直接使用Salesforce官方的Flutter SDK,其内置了针对移动应用优化的OAuth认证逻辑,无需额外配置HTTPS站点。
内容的提问来源于stack exchange,提问作者jani_r
相关产品推荐
相关产品推荐

