12

मैं अपने ऐप को Google+ लॉगिन का उपयोग करने वाली नई एंड्रॉइड एम अनुमतियों के साथ अपडेट करने का प्रयास कर रहा हूं, लेकिन जब मैं checkSelfPermission(Manifest.permission.GET_ACCOUNTS) करता हूं तो संवाद करता है कि "MyApp को आपके संपर्कों तक पहुंचने दें?" अस्वीकार करें और बटन की अनुमति दें।GET_ACCOUNTS अनुमति के साथ गलत संदेश

यह GET_ACCOUNTS अनुमति के लिए अजीब लगता है। क्या इसे इसके बजाय अपने खातों तक पहुंचने से संबंधित कुछ नहीं कहना चाहिए? क्या यह एक बग है? या मुझे कुछ अलग करना चाहिए?

+4

यह डिजाइन द्वारा है, लेकिन चौंकाने डिजाइन। संपर्क अनुमतियां अत्यंत महत्वपूर्ण हैं - आमतौर पर सैकड़ों लोगों के निजी डेटा की सुरक्षा। इसके लिए उपयोगकर्ता से पूछने के लिए, GET_ACCOUNTS का उपयोग करने के लिए, कोई समझ नहीं आता - उपयोगकर्ता को इसे स्वीकार नहीं करना चाहिए। – Tom

उत्तर

4

GET_ACCOUNTS अनुमति, android.permission-group.CONTACTS समूह का हिस्सा है

  • android.permission.WRITE_CONTACTS
  • android.permission.GET_ACCOUNTS

    • android.permission.READ_CONTACTS के साथ

    यही कारण है कि आप संपर्कों के लिए संदेश प्राप्त करते हैं।

    तो जब आप किसी समूह में एक अनुमति मांगते हैं, तो आप उन सभी समूहों में उन्हें प्राप्त करेंगे। आप एंड्रॉइड एम here

  • +2

    हम्म .. यह अजीब है। इसलिए यदि हम GET_ACCOUNTS अनुमति मांग रहे थे तो उपयोगकर्ताओं को यह कहते हुए भ्रामक लगता है कि हम संपर्क पढ़ने की कोशिश कर रहे हैं। नहीं? –

    +1

    ठीक है, यही कारण है कि Google ने चाहिएShowRequestPermissionRationale विधि बनाई है, ताकि आप स्वयं को उपयोगकर्ता को समझा सकें कि आप एक निश्चित अनुमति क्यों पूछते हैं – DDsix

    +2

    मेरे पास ऐसा है लेकिन ऐसा लगता है कि इसे नहीं कहा जाता है और ऐसा लगता है कि एंड्रॉइड निर्धारित करता है कि उसे इसे दिखाना चाहिए या नहीं। तो :( –

    -1

    में अनुमति के बारे में अधिक जानकारी प्राप्त कर सकते हैं मैं आज दोपहर एक ग्राहक का ऐप अपडेट कर रहा था जो उपयोगकर्ताओं को Google+ के साथ लॉगिन करने की अनुमति देता है। आपको रनटाइम पर GET_ACCOUNTS अनुमति की जांच करने की आवश्यकता नहीं हो सकती है। मैंने android:maxSdkVersion="22" के साथ GET_ACCOUNTS अनुमति को अर्हता प्राप्त करने के लिए मैनिफेस्ट को अपडेट किया।

    नेक्सस 5 पर मार्शमलो चलने पर मैं रनटाइम अनुमति संवाद प्रदर्शित किए बिना Google+ का सफलतापूर्वक लॉगिन करने में सक्षम था। न ही सेटिंग्स> एप्स> [मेरे क्लाइंट के ऐप]> अनुमतियों में संपर्क दिखाई देते हैं। Marshmallow में व्यवहार के परिवर्तन को दर्शाती GET_ACCOUNTS के लिए

    <uses-permission android:name="android.permission.AUTHENTICATE_ACCOUNTS" android:maxSdkVersion="22"/> 
    <uses-permission android:name="android.permission.GET_ACCOUNTS" android:maxSdkVersion="22"/> 
    <uses-permission android:name="android.permission.MANAGE_ACCOUNTS" android:maxSdkVersion="22"/> 
    <uses-permission android:name="android.permission.USE_CREDENTIALS" android:maxSdkVersion="22"/> 
    

    प्रलेखन here वर्णन किया गया है।

    +0

    क्या मैनिफेस्ट tihs तरीके में 'maxSdkVersion' निर्दिष्ट करने के लिए कोई दुष्प्रभाव हैं? –

    +0

    विश्वास मत करो तो नहीं। मार्शमलो पर आपको रनटाइम पर GET_ACCOUNTS अनुमति के लिए संकेत देना चाहिए यदि आपको किसी ऐप द्वारा बनाए गए किसी भी खाते को अपने आप से अलग हस्ताक्षर के साथ एक्सेस करने की आवश्यकता है। – fingertricks

    +0

    maxSdkVersion 22 का उपयोग न करें। इसका मतलब है कि कोई भी मार्शमॉल डिवाइस आपके स्टोर को Play Store में नहीं देखेगा। –

    4

    मैं Google+ लॉगिन से दूर जाने और नए Google लॉगिन का उपयोग करने की अनुशंसा करता हूं। इसे ईमेल तक पहुंचने के लिए कोई विशेष अनुमति की आवश्यकता नहीं है और इसे आसानी से एकीकृत किया जा सकता है।

    https://developers.google.com/identity/sign-in/android/start

    संबंधित मुद्दे