मैं कुछ दिनों से इस समस्या से जूझ रहा हूं और मैं ज्यादा प्रगति नहीं कर रहा हूं, किसी भी मदद की सराहना की जाएगी। मैं फायरस्टोर के लिए नया हूं लेकिन वास्तव में इसकी पेशकश की संभावनाओं को पसंद करता हूं। मैंने प्लगइन.क्लाउडफायरस्टोर और Xamarin.Forms का उपयोग करके एंड्रॉइड और आईओएस ऐप से बुनियादी दस्तावेज प्राप्त करने में सफलतापूर्वक कामयाबी हासिल की है।

हालांकि मुझे कुछ बैक-एंड सेवाओं, डेटा सेट-अप इत्यादि जैसी चीज़ों की आवश्यकता है और नियमित पुराने सी # डेस्कटॉप ऐप के माध्यम से फ़ायरस्टोर से कनेक्ट करने में सक्षम होना चाहिए। इसलिए मैंने क्विक स्टार्ट गाइड का पालन किया, Nuget'ed Google.Cloud.Firestore, पर्यावरण चर सेट करें और कोई फर्क नहीं पड़ता कि मैं "PERMISSION_DENIED: अनुपलब्ध या अपर्याप्त अनुमतियाँ" प्राप्त करने वाले कोड को कैसे आज़माता हूँ।

कुछ विवरण, मैं प्रोजेक्ट स्वामी अनुमतियों के साथ सेट किए गए सेवा खाते का उपयोग कर रहा हूं और अभी तक डिफ़ॉल्ट पहुंच नियमों को नहीं बदला है। मुझे पता है कि पर्यावरण चर सही ढंग से सेट-अप है और फ़ाइल मिल गई है। सभी पैकेज सबसे हाल के हैं। निराश करते हुए कि मेरे आईओएस/एंड्रॉइड ऐप्स काम कर रहे हैं, लेकिन ऐसा नहीं है, मुझे मोबाइल ऐप्स के साथ और अधिक समस्याएं होने की उम्मीद है। जैसा कि मैं अभी भी यह सब खोज रहा हूं, यह सिर्फ एक यूनिट टेस्ट में है, इसलिए मैं कोड को बहुत जल्दी निष्पादित और बदल सकता हूं।

डेस्क पर अपना सिर पीटना शुरू करने से पहले मदद की वास्तव में सराहना की जाएगी :-)

[TestClass]
public class UnitTest1
{
    [TestMethod]
    public void TestMethod1()
    {
        Task<string> task = Task.Run<string>(async () => await GetUserName());
        var x = task.Result;
        return ;

    }

    private async Task<string> GetUserName()
    {
        string projectId = "matchesJson";
        FirestoreDb db = FirestoreDb.Create(projectId);
        string retVal = "";

        try
        {
            CollectionReference col = db.Collection("users");
            // Exception thrown on next line
            QuerySnapshot snapshot = await col.GetSnapshotAsync();
            // get some data
            retVal = "";
        }
        catch (Exception e)
        {
            retVal =  e.Message;
        }
        return retVal;
    }

}

---- एडिटिंग एडिंग रूल -------- आज 3 मार्च 2020 है --

rules_version = '2';
service cloud.firestore {
  match /databases/{database}/documents {
    // This rule allows anyone on the internet to view, edit, and delete
    // all data in your Firestore database. It is useful for getting
    // started, but it is configured to expire after 30 days because it
    // leaves your app open to attackers. At that time, all client
    // requests to your Firestore database will be denied.
    //
    // Make sure to write security rules for your app before that time, or else
    // your app will lose access to your Firestore database
    match /{document=**} {
      allow read, write: if request.time < timestamp.date(2020, 3, 28);
    }
  }
}
1
drHodge 3 मार्च 2020, 07:31

2 जवाब

मुझे मुद्दा मिला। यह दस्तावेज़ीकरण में बहुत स्पष्ट नहीं है, लेकिन सेवा खाते का उपयोग करते समय आपको खाते में अलग से अनुमति जोड़ने की आवश्यकता होती है। यह Google कंसोल में पहचान की खोज करके और सही अनुमति लागू करके किया जा सकता है। अभी के लिए मैंने केवल इस POC के लिए 'प्रोजेक्ट ओनर' प्रदान किया है, लेकिन शायद अधिक बारीक अनुमति है।

पढ़ने के लिए धन्यवाद और 'रैलेमोस' टिप्पणियों के लिए धन्यवाद।

1
drHodge 4 मार्च 2020, 07:01
यह जानकर अच्छा लगा कि आपको समाधान मिल गया है :)
 – 
Rafael Lemos
4 मार्च 2020, 12:11

जैसा कि आप इस दस्तावेज पर देख सकते हैं, आप देख सकते हैं कि डिफ़ॉल्ट नियम हैं किसी को पढ़ने/लिखने की अनुमति न देने के लिए और चूंकि आपने कहा था कि आपने उन्हें नहीं बदला है, शायद यही समस्या पैदा कर रहा है।

आप सुरक्षा नियम अब कुछ इसी तरह सेट किए जाने चाहिए:

match /databases/{database}/documents {
  match /{document=**} {
    allow read, write: if false;
  }
}

एक्सेस प्राप्त करने के लिए आपको अनुमति वाले हिस्से को निम्नलिखित में बदलना होगा:

allow read, write: if true;

यह सभी को इसे एक्सेस करने की अनुमति देगा, यदि आप एक्सेस को अलग करना चाहते हैं तो आपको यह पता लगाना होगा कि आपके ऐप की ज़रूरतों के अनुसार एक्सेस देने की शर्तें क्या हैं और पहले बताए गए दस्तावेज़ तब तक भी मददगार होने चाहिए।

अगर यह कार्यशील है, तो मुझे बताएं।

0
Rafael Lemos 3 मार्च 2020, 17:29
डिफ़ॉल्ट नियम के चारों ओर एक चेतावनी के साथ टिप्पणियों का एक समूह होता है। // यह नियम इंटरनेट पर किसी को भी आपके फायरस्टोर डेटाबेस के सभी डेटा को देखने, संपादित करने और हटाने की अनुमति देता है। प्राप्त करने में उपयोगी है। ।आदि। मैं प्रश्न में नियम जोड़ दूंगा क्योंकि यह यहां फिट नहीं होगा। देखने के लिए समय निकालने के लिए धन्यवाद।
 – 
drHodge
3 मार्च 2020, 18:52
बस यह जांचने के लिए कि क्या समस्या वास्तव में है, इसे allow read, write: if true; में बदलें जैसा कि मैंने सुझाव दिया है, अगर यह काम करता है, तो वास्तव में शर्त पूरी नहीं हो रही है, शायद इसलिए कि मूल्य की तुलना ठीक से नहीं की जा रही है या उनमें से एक है अपरिभाषित, टाइमस्टैम्प को .toMillis() के साथ मिलीसेकंड में बदलने का प्रयास करें ताकि तुलना संख्याओं के साथ की जा सके
 – 
Rafael Lemos
3 मार्च 2020, 19:14
इस पर सेट करें, लेकिन यह मदद नहीं करता है। मैच / {दस्तावेज़ = **} {पढ़ने की अनुमति दें, लिखें: यदि सत्य है; }
 – 
drHodge
4 मार्च 2020, 04:29
मैं एक सेवा खाते का उपयोग कर रहा हूं जिसे मैंने फायरस्टोर के भीतर बनाया है, इससे कोई फर्क पड़ेगा। यह भी दिलचस्प है कि आईओएस/एंड्रॉइड संस्करण काम करते हैं।
 – 
drHodge
4 मार्च 2020, 04:30