maui macos应用程序上的Firebase凭据文件

sdnqo3pr  于 2023-06-24  发布在  Mac
关注(0)|答案(1)|浏览(184)

早上好我正在开发一个net maui应用程序,但我遇到了以下问题:在windows上它工作得很完美,在mac上我无法连接到数据库,因为我无法跟踪与firebase凭据的文件。

string basePath = AppDomain.CurrentDomain.BaseDirectory;
string credentialsPath = Path.Combine(basePath, "giogo-dee69-firebase-adminsdk-fsksp-1cf7a95106.json");

Environment.SetEnvironmentVariable("GOOGLE_APPLICATION_CREDENTIALS", credentialsPath);

       try
        {
            FirestoreDb db = FirestoreDb.Create("giogo-dee69");
        DocumentReference coll = db.Collection("NomeCollezione").Document("Capoccione");

        Modello DaInserire = new Modello();

        DaInserire.Username = "Picciotto";
        DaInserire.NumeroCapelli = 19;

    await coll.SetAsync(DaInserire);

        }
        catch (Exception ex)
        {
            Console.WriteLine("Errore di connessione a Firestore: " + ex.Message);
        }

The result:TestFirebase[1325:25275] Firestore错误:从位置/Users/**************/Projects/TestFirebase/TestFirebase/bin/Debug/net7.0-maccatalyst/maccatalyst-x64/TestFirebase.app/Contents/MonoBundle/giogo-dee 69-firebase-adminsdk-fsksp-1cf7a95106.json阅读凭据文件时出错:无法找到文件“/Users/*************/Projects/TestFirebase/TestFirebase/bin/Debug/net7.0-maccatalyst/maccatalyst-x64/TestFirebase.app/Contents/MonoBundle/giogo-dee 69-firebase-adminsdk-fsksp-1cf7a95106.json”。
TestFirebase[1325:25275]请检查环境变量GOOGLE_APPLICATION_CREDENTIALS的值。
我不明白它是否在编译时不复制文件(Windows是这样做的,macOS不是),或者找到文件夹的方法是错误的。感谢所有能帮助我的人。

vxf3dgd4

vxf3dgd41#

这与这个问题类似:SetEnvironmentVariable for GOOGLE_APPLICATION_CREDENTIALS works on windows but give error on android.和mattleibow的评论给出了一个跨平台的解决方案,可能会有所帮助。
首先,在Raw子文件夹中设置凭据文件,并设置属性“MauiAsset”和“copy if new”。
然后在运行时读取文件并存储在临时文件夹或任何其他文件夹中:

//new path we will copy the file to. 
var newPath = Path.Combine(FileSystem.CacheDirectory, "giogo-dee69-firebase-adminsdk-fsksp-1cf7a95106.json");

// read the file in Resource/Raw in this way
using var json = await FileSystem.OpenAppPackageFileAsync("giogo-dee69-firebase-adminsdk-fsksp-1cf7a95106.json");
//create the new path and copy the original json file here
using var dest = File.Create(newPath);
await json.CopyToAsync(dest);

Environment.SetEnvironmentVariable("GOOGLE_APPLICATION_CREDENTIALS", newPath);

另外,使用dest.Close();作为MahmoudAlEssawi注解。
然后您可以在新路径中找到凭据文件,我们可以读取它。
希望能成功!

相关问题