Android应用中Coinbase V2 OAuth认证redirect uri配置求助
没问题,我来帮你把Android应用配置Coinbase V2 OAuth认证的Redirect URI细节说清楚,分两部分来梳理:Coinbase API后台的配置,还有你的Android应用端的设置。
一、Coinbase API后台的Redirect URI配置
你需要在Coinbase开发者后台填写自定义的App Scheme URI,格式推荐用你的应用包名作为Scheme前缀,比如:com.your.app.package://coinbase-oauth
这里的核心规则:
- Scheme部分最好用你的应用包名(比如
com.your.app.package),确保唯一性,避免和其他应用冲突 - Host部分可以自定义,比如
coinbase-oauth,只要好记且和应用端配置一致就行 - 一定要保证这个URI和你后续在Android应用里配置的完全一致,大小写、符号都不能错,否则授权后Coinbase无法正确跳转回你的应用
二、Android应用端的配置
1. AndroidManifest.xml 配置Intent-Filter
找到你用来处理OAuth回调的Activity(可以是专门的回调页面,也可以复用现有页面),给它添加Intent-Filter,让系统能识别并唤起这个Activity来处理Coinbase的跳转:
<activity android:name=".ui.auth.CoinbaseOAuthCallbackActivity" android:exported="true"> <!-- 必须设为true,允许外部应用唤起 --> <intent-filter> <action android:name="android.intent.action.VIEW" /> <category android:name="android.intent.category.DEFAULT" /> <category android:name="android.intent.category.BROWSABLE" /> <!-- 允许从浏览器跳转 --> <!-- 这里的data要和Coinbase后台填的URI完全匹配 --> <data android:scheme="com.your.app.package" android:host="coinbase-oauth" /> </intent-filter> </activity>
2. 发起OAuth请求时的Redirect URI设置
在构造Coinbase授权请求的URL时,redirect_uri参数必须填和上面完全一致的字符串,记得要做URL编码避免特殊字符问题:
// 替换成你自己的参数 String clientId = "YOUR_COINBASE_CLIENT_ID"; String redirectUri = "com.your.app.package://coinbase-oauth"; String scope = "wallet:accounts:read,wallet:transactions:read"; // 根据你的需求添加权限 // 构造授权URL String authUrl = "https://www.coinbase.com/oauth/authorize" + "?client_id=" + clientId + "&redirect_uri=" + Uri.encode(redirectUri) + "&response_type=code" + "&scope=" + scope; // 然后用Intent打开这个URL,比如跳转到浏览器或者自定义WebView Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(authUrl)); startActivity(intent);
3. 处理回调获取授权码
在你的回调Activity里,需要从Intent的Data中提取Coinbase返回的授权码code,然后用这个code去请求AccessToken:
@Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); Uri callbackUri = getIntent().getData(); if (callbackUri != null) { String authCode = callbackUri.getQueryParameter("code"); if (!TextUtils.isEmpty(authCode)) { // 这里调用接口,用authCode换取AccessToken exchangeCodeForAccessToken(authCode); } } // 处理完成后可以关闭这个页面,回到之前的流程 finish(); } // 示例方法:用授权码换AccessToken private void exchangeCodeForAccessToken(String code) { // 这里实现你和Coinbase API的交互逻辑,请求token接口 }
几个关键注意事项
- 唯一性:你的App Scheme必须唯一,最好用应用包名,防止和其他应用的Scheme冲突导致跳转失败
- 一致性:Coinbase后台的Redirect URI、Manifest里的Data配置、请求时的redirect_uri参数,三者必须完全一致,差一个字符都不行
- 权限:确保回调Activity的
android:exported="true",否则Android 12+会禁止外部应用唤起这个Activity
内容的提问来源于stack exchange,提问作者tiagocarvalho92
相关产品推荐
相关产品推荐

