You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

Xamarin Android原生应用Google认证:重定向URI无效问题求助

排查Xamarin Android Google认证「无效重定向URI」问题

我来帮你梳理下这个问题的常见原因,结合你给出的代码和场景,大概率是以下几个细节没匹配到位:

  • 重定向URI与Google Console配置不匹配
    你代码里的重定向URI是com.xplorpal.pal_:/oauth2redirect,要确保在Google Developer Console的Android客户端ID配置中,包名完全是com.xplorpal.pal_(包括末尾的下划线)。另外,Android类型的客户端ID,Console会自动根据包名+SHA-1生成对应的重定向URI,如果你是手动填写的,一定要保证和代码里的字符串完全一致,大小写、特殊符号都不能错。

  • 代码里的变量大小写笔误
    看你的代码片段:

    public const string RedirectUrl = "com.xplorpal.pal_:/oauth2redirect";
    _auth = new OAuth2Authenticator(clientId, string.Empty, scope, new Uri(AuthorizeUrl), new Uri(redirectUrl), new Uri(AccessTokenUrl), null, IsUsingNativeUI);
    

    C#是大小写敏感的,RedirectUrlredirectUrl如果不是同一个变量(比如小写的redirectUrl是未定义的),实际传递的URI就会出错,直接导致「无效重定向」。检查下这里的变量名是否统一。

  • SHA-1证书指纹不匹配
    这是很容易被忽略的点:就算包名和重定向URI都对了,如果Console里配置的SHA-1和你当前运行应用的证书SHA-1不一致,Google也会拒绝重定向请求,表现出来就是「无效重定向URI」。你可以用下面的命令查看当前证书的SHA-1:

    keytool -list -v -keystore 你的调试/发布keystore路径
    

    把这个值和Console里的对比,确保完全一致。

  • AndroidManifest缺少intent-filter配置
    你的应用需要声明能处理这个重定向URI的intent-filter,否则系统无法把认证后的请求路由回你的应用。在AndroidManifest.xml里的目标<activity>标签下添加这段配置:

    <intent-filter>
        <action android:name="android.intent.action.VIEW" />
        <category android:name="android.intent.category.DEFAULT" />
        <category android:name="android.intent.category.BROWSABLE" />
        <data android:scheme="com.xplorpal.pal_" />
    </intent-filter>
    

    这里的scheme要和你重定向URI里的前缀(com.xplorpal.pal_)完全一致。

内容的提问来源于stack exchange,提问作者S. Koshelnyk

火山引擎 最新活动