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#是大小写敏感的,
RedirectUrl和redirectUrl如果不是同一个变量(比如小写的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




