Android端Firebase AuthUI的Twitter登录失败 如何指定Browser API Key?
核心结论
AuthUI.IdpConfig.TwitterBuilder 未提供公开方法直接指定单独的API Key,无法直接通过构造器传入Browser API Key。
可行解决方案
以下两个方案均不会影响原有其他Firebase服务的调用:
- 方案1:调整原有API Key的访问限制
无需更换API Key,直接在Google Cloud控制台修改你当前安卓项目使用的API Key的限制规则:
在原有「安卓应用」限制的基础上,新增「HTTP 引荐来源」限制,添加你的Firebase认证回调域名规则https://<你的项目ID>.firebaseapp.com/*即可。该调整后,原有安卓端服务调用不受影响,同时Twitter登录发起的回调请求也会被放行。 - 方案2:配置双FirebaseApp实例,单独给Auth服务指定Browser API Key
你可以在同一个安卓应用内初始化多个独立的FirebaseApp实例,不同实例使用不同的API Key:- 保留默认初始化的FirebaseApp实例,继续使用原有安卓受限API Key,供给除登录外的其他Firebase服务使用
- 手动初始化一个专门用于Auth认证的FirebaseApp实例,初始化参数填入Browser API Key、项目ID等配置
- 调用AuthUI时指定使用这个专门的认证实例发起登录请求
示例代码如下:
该方案完全隔离不同服务的API Key使用规则,不会对原有其他服务调用产生任何影响。// 初始化专门用于认证的Firebase实例 FirebaseOptions authOptions = new FirebaseOptions.Builder() .setApiKey("你的Browser API Key") .setApplicationId("你的应用ID") .setProjectId("你的项目ID") .build(); FirebaseApp authApp = FirebaseApp.initializeApp(this, authOptions, "auth专用实例"); // 用该实例创建Twitter登录配置 AuthUI.IdpConfig twitterConfig = new AuthUI.IdpConfig.TwitterBuilder().build(); Intent signInIntent = AuthUI.getInstance(authApp) .createSignInIntentBuilder() .setAvailableProviders(Arrays.asList(twitterConfig)) .build(); startActivityForResult(signInIntent, RC_SIGN_IN);
内容的提问来源于stack exchange,提问作者Zvaitwa Muroro
相关产品推荐
相关产品推荐

