Firebase auth工作正常,调试版本突然开始失败,没有任何代码更改,记录下面的消息
D/PhoneAuthActivity(7392):signInWithCredential:failure:com.google.firebase.auth.FirebaseAuthException:此应用无权使用Firebase身份验证.请验证Firebase控制台中是否配置了正确的软件包名称和SHA-1.[应用验证失败].
成功登录和失败之间唯一值得注意的行动是android studio升级.
java android firebase android-studio firebase-authentication
我正在尝试为Flutter应用程序生成SHA-1,Android工作室支持Google登录,但我不知道该怎么做,我看到一些帖子表明要运行命令,但我需要我猜是一个jks文件,而且颤动并没有创造出来.
有人能帮助我吗?
我们在Android(Jellybean和更高版本)下,我们有一个应用程序需要使用OAuth2与Google进行身份验证.
我简化了登录活动,但它看起来像这样:
AccountManager mAccountManager;
// [...]
Account account = new Account("myEmail@gmail.com", "com.google");
// same with professional email managed by Google as myEmail@myDomain.com
// real code recovers accounts with mAccountManager.getAccountsByType("com.google")
mAccountManager = AccountManager.get(getBaseContext());
mAccountManager.getAuthToken(account, "oauth2:https://www.googleapis.com/auth/userinfo.email", null, MyActivity.this, new AccountManagerCallback<Bundle>() {
@Override
public void run(AccountManagerFuture<Bundle> accountManagerFuture) {
try {
String token = accountManagerFuture.getResult().getString(AccountManager.KEY_AUTHTOKEN);
// exception occurs here
// [...]
} catch (Exception e) {
Log.e("account", "exception occurs", e);
}
}
}, null);
Run Code Online (Sandbox Code Playgroud)
当我们调用时accountManagerFuture.getResult(),会触发此异常:
android.accounts.AuthenticatorException: UNREGISTERED_ON_API_CONSOLE
at android.accounts.AccountManager.convertErrorToException(AccountManager.java:2024)
at android.accounts.AccountManager.access$400(AccountManager.java:144)
at …Run Code Online (Sandbox Code Playgroud) Debug signing certificate SHA-1注册新应用时,最新的Firebase云消息传递面板具有可选字段.表单声明证书是:
在Auth中需要动态链接,邀请和Google登录支持.在"设置"中编辑SHA-1.
关于如何获取证书有许多在线资源(示例),但我找不到关于其目的的正确解释,发布和调试之间的区别是什么,以及Firebase为什么只采用后者.
SHA-1证书的目的是什么,发布版本和调试版本之间有什么区别?
我最近更新了 firebase 库,没有改变任何其他东西。
implementation 'com.google.firebase:firebase-auth:20.0.1'
implementation 'com.google.firebase:firebase-messaging:21.0.0'
implementation 'com.google.firebase:firebase-storage:19.2.0'
implementation 'com.google.android.gms:play-services-auth:19.0.0'
Run Code Online (Sandbox Code Playgroud)
但是每当用户尝试注册时,Recaptcha 都会显示几秒钟,然后有时会在从 firebase auth 收到 OTP 后重定向到网络浏览器 (CustomChromeTab)。大约需要 15-30 秒。如何防止 Recaptcha?但是,我在 firebase 控制台中添加了 SHA1 和 SHA256,并且没有更改代码。谢谢。
这是验证码验证过程的屏幕截图:
我想在我的Android应用程序中添加谷歌身份验证功能,为此我需要获得Android签名证书SHA-1.官方教程说使用下面的命令来获取SHA-1哈希值.
在发布模式下
keytool -exportcert -list -v \-alias <your-key-name> -keystore <path-to-production-keystore>
Run Code Online (Sandbox Code Playgroud)
调试模式
keytool -exportcert -list -v \-alias androiddebugkey -keystore ~/.android/debug.keystore
Run Code Online (Sandbox Code Playgroud)
现在我对这个生产密钥库和debug.keystore以及如何获取生产密钥库的路径感到困惑?解释表示赞赏.
当我尝试使用YouTube API for Search时,出现此错误:
出现服务错误:403:请求未指定任何Android程序包名称或签名证书指纹.请确保客户端正在发送它们或使用API控制台更新您的密钥限制.
在MainActivity中我有这个代码:
youtube = new YouTube.Builder(new NetHttpTransport(), JSON_FACTORY, new HttpRequestInitializer() {
@Override
public void initialize(HttpRequest httpRequest) throws IOException {
}
}).setYouTubeRequestInitializer(new YouTubeRequestInitializer(apiKey)).setApplicationName("Some Name").build();
Run Code Online (Sandbox Code Playgroud)
在云控制台中,我有一个Android的ApiKey,包名设置和使用keytool命令获得的SHA-1号.
android youtube-api android-youtube-api android-studio youtube-data-api
我想使用assetlinks.json进行appindexing.我应该使用SHA256指纹,但是当我在Android Studio中打印出signedReport时,我只有SHA1.我可以使用SHA1,如果没有,我如何获得SHA256签名应用程序?
使用Manish Jain的答案我已经设法只列出调试键,这比我自己做的更多,但是如果我将实际的keystore路径和jks文件放在路径中,"keytool -list -v -keystore"C:\Users\_自我\ Keystores\android.jks"-alias mykey -storepass 1password -keypass 2password"出现了一组不同的密钥,我假设它是释放密钥集.
大问题是为什么android studio只在我从Gradle打印出signedReport时列出了调试键,为什么它说"Variant:releaseUnitTest,Config:none"?任何的想法?
顺便说一句,这个问题与建议的副本无关.
编辑:回复jyomin的问题2.我希望它也能帮助其他人.
*****对于Release:1,请转到:C:\ Program Files\Java\jdk1.7.0_25\bin(或者你的jdk文件所在的位置)2,在win explorer 3的地址栏中输入"cmd",添加:keytool -list -v -keystore"C:\ Users\yourUserName\Keystores\android.jks"-alias yourAppName -storepass yourPasswordToKeystore -keypass yourPasswordToRequiredAppKey
小心!!!如果密钥库中有多个密钥,它可能无法为您提供与给定应用程序匹配的正确密钥!
为您的应用获取SHA256的另一种方法:在开发者控制台或Firebase上,您可以在某处找到相关的SHA256密钥.我现在找不到它,但是如果你继续寻找它,它就在那里.
我刚在Google Play开发者控制台上找到它:
它会显示SHA键
祝好运!
android sha android-app-indexing google-app-indexing firebase-app-indexing
Windows 10
Firebase我想创建Firebase项目.所以我使用这个官方文档: 手动添加Firebase
脚步:
这里屏幕:

所以我打开shell并输入:
keytool -exportcert -list -v -alias androiddebugkey -keystore ~/.android/debug.keystore
Run Code Online (Sandbox Code Playgroud)
但我得到错误:
keytool -exportcert -list -v -alias androiddebugkey -keystore ~/.android/debug.keystore
keytool error: java.lang.Exception: Keystore file does not exist: ~/.android/debug.keystore
java.lang.Exception: Keystore file does not exist: ~/.android/debug.keystore
at sun.security.tools.keytool.Main.doCommands(Main.java:745)
at sun.security.tools.keytool.Main.run(Main.java:343)
at sun.security.tools.keytool.Main.main(Main.java:336)
Run Code Online (Sandbox Code Playgroud)
怎么了?在我的主文件夹中没有文件"debug.keystore".那么我怎么能得到哈希?
我一直在互联网上搜索谷歌翻译API使用,但我找不到下降教程或解释.这就是我所做的:
在我的Google API控制台中,我使用此答案使用SHA1指纹在Public API访问下生成了一个键.以下是我的API控制台的外观:

在Android工作室中,我使用以下代码使用OkHttp库构建并发送我的请求:
OkHttpClient client = new OkHttpClient();
String apiKey = "My API key";
String apiLangSource = "en";
String apiLangTarget = "de";
String apiWord = "Hello";
String googleApiUrl = "https://www.googleapis.com/language/translate/v2?key=" + apiKey + "&source=" + apiLangSource + "&target=" + apiLangTarget + "&q=" + apiWord;
Request request = new Request.Builder().url(googleApiUrl).build();
Log.d(TAG, "API STRING" + googleApiUrl);
Call call = client.newCall(request);
call.enqueue(new Callback() {
@Override
public void onFailure(Request request, IOException e) {
Log.d(TAG , "HTTP CALL FAIL");
}
@Override …Run Code Online (Sandbox Code Playgroud) android ×8
firebase ×4
google-api ×2
dart ×1
flutter ×1
java ×1
oauth-2.0 ×1
sha ×1
sha1 ×1
youtube-api ×1