Ab_*_*Ab_ 13 android firebase cannot-find-symbol
我正在尝试学习Firebase,所以我通过了Android Codelab.然而,他们给我的项目有一个错误:
无法解析符号default_web_client_id
我不知道如何解决它,因为我不知道它的价值default_web_client_id或它是什么.它在onCreate()方法中:
SigninActivity.java
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_sign_in);
mFirebaseAuth = FirebaseAuth.getInstance();
// Assign fields
mSignInButton = (SignInButton) findViewById(R.id.sign_in_button);
// Set click listeners
mSignInButton.setOnClickListener(this);
// Configure Google Sign In
GoogleSignInOptions gso = new GoogleSignInOptions.Builder(GoogleSignInOptions.DEFAULT_SIGN_IN)
.requestIdToken(getString(R.string.default_web_client_id))
.requestEmail()
.build();
mGoogleApiClient = new GoogleApiClient.Builder(this)
.enableAutoManage(this /* FragmentActivity */, this /* OnConnectionFailedListener */)
.addApi(Auth.GOOGLE_SIGN_IN_API, gso)
.build();
}
Run Code Online (Sandbox Code Playgroud)
我不知道它是什么,它的价值是什么,为什么它给我这个错误.到目前为止我没有改变任何东西,除了添加google-services.json.我添加了SHA-1并在控制台中启用了Google.
Dex*_*xto 31
解析时有时会出现问题google-services.json.我向有关团队报告了这个问题.
同时按照以下步骤解决此问题以进一步发展 -
1)打开google-services.json文件 - >客户端 - > oauth_client - > client_id
2)复制此客户端ID并对其进行硬编码 .requestIdToken("your ID")
它允许在谷歌登录成功后通过GoogleSignInAccount请求"IdToken"并使用firebase授权您的凭证.
编辑
尝试删除并重新创建项目,然后google-service.json在Android项目中重新导入新项目
小智 19
更通用的解决方案是将其添加google-services.json到应用程序的根目录中.
并添加
apply plugin: 'com.google.gms.google-services 在build.gradle文件的末尾.
说明
当应用程序构建键值时,google-services.json配置文件中的字符串然后放入values.xml文件中,以使它们可以在代码中的任何位置全局使用.这使我们免于在代码中对client_id进行硬编码.
注意
不要在default_web_client_id其中添加with client_id作为其值,strings.xml以避免重复错误,Error: Duplicate resources稍后在运行代码时.
Jai*_*nez 12
经过一段时间搜索“智能”修复而不直接插入后,按照FirebaseUI 项目client_id的这个答案,我只需要在中添加下一行:app/build.gradle
implementation 'com.firebaseui:firebase-ui-auth:4.3.2'
Run Code Online (Sandbox Code Playgroud)
小智 12
google-services.json在./app/文件夹中build.gradle以下内容: buildscript {
...
dependencies {
...
classpath 'com.google.gms:google-services:4.3.5'
}
Run Code Online (Sandbox Code Playgroud)
build.gradle,应用插件: apply plugin: 'com.google.gms.google-services'
Run Code Online (Sandbox Code Playgroud)
这是我发现的烦人的事情。将其升级4.3.5到任何更高版本都会导致 Android Studio 无法检测生成的 value.xml 文件。
显然R.string.default_web_client_id是从IDE构建生成的
我以为我们应该手动添加它 - 耗时的错误
https://developers.google.com/android/guides/google-services-plugin
google-services 插件有两个主要功能:1) 处理 google-services.json 文件并生成可在您的应用程序代码中使用的 Android 资源。
~~~~
JSON 处理的主要结果是生成两个 XML 文件,您可以在 Java 代码中将它们作为 Android 资源引用。
因此 - 成功构建后,如果您在 IDE 中搜索 string default_web_client_id,您将看到一个结果是/generated 文件夹下的values.xml,其中包含您的 firebase 配置的值,如下例所示。
实际上看到那个文件,有助于澄清这里的事情
<resources>
<string name="default_web_client_id" translatable="false">123.apps.googleusercontent.com</string>
<string name="firebase_database_url" translatable="false">https://123.firebaseio.com</string>
<string name="gcm_defaultSenderId" translatable="false">123</string>
<string name="google_api_key" translatable="false">123</string>
<string name="google_app_id" translatable="false">123</string>
</resources>
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
24951 次 |
| 最近记录: |