在Xamarin表单中,SetEnvironmentVariable

时间:2019-02-26 12:12:19

标签: c# xamarin xamarin.forms google-cloud-datastore

在具有Xamarin Forms代码共享应用程序的.Net Standard中,我想为Google Datastore设置环境变量。这样我就可以通过移动应用与Google Datastore通信。

以下代码段在console应用中正常运行,但在尝试创建数据存储区db对象时在Xamarin Forms中抛出错误。

从位置/DB.json读取凭据文件时出错:找不到文件“ /DB.json” 请检查环境变量GOOGLE_APPLICATION_CREDENTIALS

的值

我将 DB.json 放在解决方案的根目录上。

try
        {
            Environment.SetEnvironmentVariable("GOOGLE_APPLICATION_CREDENTIALS", @"DB.json");
            var dir = Environment.CurrentDirectory;

            // Your Google Cloud Platform project ID.
            string projectId = "xamarin-project";

            //We are storing movies. So this is a Movie kind. 
            string kind = "Country";

            //Create the datastore db
            var db = DatastoreDb.Create(projectId);

            // City entity
            Entity cityEntities = new Entity
            {
                Key = db.CreateKeyFactory(kind).CreateKey($"US"),
                ["CountryCode"] = "US",
                ["Name"] = "United States"
            };

            //Lets send the city to the datastore
            using (var transction = db.BeginTransaction())
            {
                transction.Upsert(cityEntities);
                transction.Commit();
            }
        }
        catch (Exception ex)
        {
            await DisplayAlert("Error", ex.Message, "OK");
            Console.WriteLine(ex.Message);
        }

使用Dependency读取文件也不起作用。我尝试了.Android项目。

1 个答案:

答案 0 :(得分:0)

如果您希望直接从移动应用程序中使用数据库,建议您改用Cloud Firestore(https://cloud.google.com/firestore/)。它具有显式的安全功能,可以直接从客户端访问数据库。

我认为您要使用上面的代码片段将应用程序中的服务帐户凭据加载到应用程序中,这将使任何用户都可以完全访问数据库。