You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.26 11:10:45