android 错误:找不到symbol .setCredentials(GoogleCredentials.fromStream(serviceAccount))

lmvvr0a8  于 2023-04-28  发布在  Android
关注(0)|答案(1)|浏览(90)

请帮我修改一下这段代码,我还是不明白为什么我会这样,我编辑了gradle文件,又编辑了java文件但还是不行,请帮我修复一下。p/s:这是我第一次发布帮助,所以我很感激和感激
Java文件:
在Java文件中,我试图像在Google的Firebase页面上那样声明它,但仍然得到错误

package Database;

import com.google.auth.oauth2.GoogleCredentials;

import com.google.firebase.FirebaseApp;

import com.google.firebase.FirebaseOptions;

import com.google.firebase.database.DataSnapshot;

import com.google.firebase.database.DatabaseError;

import com.google.firebase.database.DatabaseReference;

import com.google.firebase.database.FirebaseDatabase;

import com.google.firebase.database.ValueEventListener;

import java.io.FileInputStream;

import java.io.IOException;

public class DemoFirebase {

public static void main(String\[\] args) throws IOException {

FileInputStream serviceAccount = new FileInputStream("my_JSon_file");

        FirebaseOptions options = new FirebaseOptions.Builder()
                .setCredentials(GoogleCredentials.fromStream(serviceAccount))
                .setDatabaseUrl("my_database_url")
                .build();
    
        FirebaseApp.initializeApp(options);
        DatabaseReference ref = FirebaseDatabase.getInstance().getReference("User");
        ref.addValueEventListener(new ValueEventListener() {
            @Override
            public void onDataChange(DataSnapshot dataSnapshot) {
                Object value = dataSnapshot.getValue();
                System.out.println("Value is: " + value);
            }
    
            @Override
            public void onCancelled(DatabaseError error) {
                System.out.println("Error: " + error.getMessage());
            }
        });
    }

}

Gradle文件:在这个Gradle文件中,我添加了可能需要的库,但在Java文件中仍然失败

dependencies {
    implementation 'com.google.firebase:firebase-analytics:21.2.2'

    implementation platform('com.google.firebase:firebase-bom:31.5.0')

    implementation 'com.google.cloud:google-cloud-storage:2.14.0'

    implementation 'com.google.firebase:firebase-admin:9.1.1'

    implementation 'com.google.firebase:firebase-analytics'

    implementation('com.google.firebase:firebase-appcheck-debug:16.1.2')

    implementation('com.google.firebase:firebase-inappmessaging:20.3.1')

    implementation('com.google.firebase:firebase-inappmessaging-display:20.3.1')

    implementation 'com.google.auth:google-auth-library-credentials:1.12.1'

    implementation 'com.google.auth:google-auth-library-oauth2-http:1.12.1'

    implementation 'com.google.firebase:firebase-database:20.2.0'

    implementation 'androidx.appcompat:appcompat:1.6.1'

    implementation 'com.google.android.material:material:1.8.0'

    implementation 'androidx.constraintlayout:constraintlayout:2.1.4'

    implementation 'androidx.legacy:legacy-support-v4:1.0.0'

    implementation 'androidx.recyclerview:recyclerview:1.3.0'

    testImplementation 'junit:junit:4.13.2'

    androidTestImplementation 'androidx.test.ext:junit:1.1.5'

    androidTestImplementation 'androidx.test.espresso:espresso-core:3.5.1'

}
nbysray5

nbysray51#

FirebaseOptions.Builder类不包含任何.setCredentials()方法。因此,您无法在Builder类型的对象上调用这样的方法,因此出现错误。
另一方面,Firebase Admin SDK确实包含这样的方法,但不幸的是,您不能在同一个项目中使用Admin SDK和Firebase的常规Android SDK。
如果您想使用Firebase Admin SDK中的某些功能,则应考虑创建Cloud Functioncalling it from your Android application's code

相关问题