2012-03-15 29 views
6

मैं Android लाइसेंसिंग उपयोग कर रहा हूँ के रूप में यहाँ वर्णित:मानचित्रण उपयोगकर्ताओं

http://developer.android.com/guide/market/licensing/index.html

(... सत्यापित करने के लिए है कि मेरे android ऐप के लिए अपने ग्राहकों को वास्तव में अनुप्रयोग के लिए भुगतान किया है।) मेरे ऐप में वेब पर एक सर्वर घटक है, और अतिरिक्त सुरक्षा के लिए मैं इस सर्वर पर लाइसेंस सत्यापन कर रहा हूं।

यह सब ठीक काम करता है। अब, मेरी समस्या के लिए। चूंकि प्रत्येक नया उपयोगकर्ता मेरे केंद्रीय सर्वर पर संसाधनों का संबंध रखता है, इसलिए मैं वास्तव में गैर-भुगतान करने वाले उपयोगकर्ताओं के लिए अनिच्छुक हूं। मैंने धनवापसी प्राप्त करने के बाद ऐप का उपयोग जारी रखने वाले उपयोगकर्ताओं के कुछ सबूत देखे हैं (सामान्य 15-मिनट की छूट अवधि के अनुसार)।

इस व्यवहार को रोकने के लिए, यह बहुत अच्छा होगा अगर Google Checkout पर उपयोगकर्ताओं के भुगतान को मैप करने का कोई तरीका था, मेरे सिस्टम में वास्तविक उपयोगकर्ताओं के लिए। क्या यह संभव है?

एंड्रॉइड लाइसेंस सर्वर से प्राप्त प्रतिक्रिया डेटा जो "userId" नामक फ़ील्ड होता है, लेकिन यह Google Checkout में किसी भी जानकारी के अनुरूप प्रतीत नहीं होता है। (ResponseData की परिभाषा के लिए http://www.androidadb.com/source/skylight1-read-only/GoogleLVL/src/com/android/vending/licensing/ResponseData.java.html देखें।)

क्या यह निर्धारित करना संभव है कि चेकआउट मानचित्र में कौन सा भुगतान किस ऐप इंस्टॉलेशन में हो?

+1

मुझे विश्वास नहीं है कि इस प्रश्न को दो बार वोट दिया गया है और पिछले नौ महीनों में कोई जवाब नहीं मिला है। यद्यपि यह बहुत समझा सकता है ... किसी भी तरह से, क्या आप हमें बता सकते हैं कि आप कैसे पता लगाते हैं कि उपयोगकर्ता धनवापसी प्राप्त करने के बाद आपके ऐप का उपयोग जारी रखते हैं? IserId की तुलना में अन्य डेटा के माध्यम से? और क्या Google Play लाइसेंसिंग जानकारी इस तथ्य को प्रतिबिंबित नहीं करनी चाहिए कि उपयोगकर्ता को धनवापसी मिलती है? –

+0

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

+0

उपयोगकर्ता आईडी फ़ील्ड को देखते हुए, मुझे पता चला कि यह बेस 64 एन्क्रिप्टेड है, और इसे पुन: प्रस्तुत करने से यह बी @ XXXXXXXX की तरह एक स्ट्रिंग प्रदान करता है, जहां एक्स ... एक्स 8 हेक्स अंकों की संख्या है, जैसे कि किसी प्रकार का पता !? इस पर टिप्पणी करने के लिए कोई भी, क्या यह उपयोगकर्ताओं को पहचानने में हमारी सहायता कर सकता है? – 3c71

उत्तर

2

जैसा कि मैं वर्तमान में इसे समझता हूं, userId प्रति-ऐप के आधार पर भी खराब हो गया है, ताकि आप विशिष्ट रूप से उपयोगकर्ताओं को पहचान सकें लेकिन यह पता नहीं लगा कि यह कौन सा उपयोगकर्ता है और न ही उसी उपयोगकर्ता ने एक और ऐप खरीदा है।

लेकिन मुझे यकीन नहीं है कि आपको userId पर आधारित इन ग्राहकों की पहचान करने की ज़रूरत है। यदि आपके पास कोई सर्वर चल रहा है, तो आपके ऐप को सुरक्षित रखने का सबसे अच्छा तरीका यह है कि आपका सर्वर लाइसेंस जांचें। इस सुरक्षित यादृच्छिक अस्थायी रूप से साथ उपयोगकर्ता लाइसेंस की जाँच करें

  • : -> लाइसेंस सेवा यहाँ एक सुरक्षित यादृच्छिक अस्थायी रूप से
  • अनुप्रयोग है:

    1. अनुप्रयोग -: -> सर्वर> एप्लिकेशन मुझे एक नया अस्थायी रूप से
    2. सर्वर दें लाइसेंस सेवा -> अनुप्रयोग: अस्थायी रूप से
    3. अनुप्रयोग की पुनरावृत्ति सहित हस्ताक्षर लाइसेंस प्रतिक्रिया -> सर्वर: (केवल सर्वर पर)
    4. सर्वर गुप्त कुंजी के साथ लाइसेंस हस्ताक्षर की जाँच करें -> अनुप्रयोग: अस्वीकार करें, या प्रदर्शन के लिए यादृच्छिक टोकन उपलब्ध कराएं, आदि

    इस परिदृश्य में, यदि आप अपने एलवीएल चेकिंग कोड से गड़बड़ करते हैं तो भी आप उपयोगकर्ताओं को प्रमाणित नहीं करेंगे।

    हालांकि, यदि आप अपना कदम नहीं देखते हैं तो आप चरण 6 के बाद कमजोरियों को पेश कर सकते हैं। फिर भी, यदि आप वर्तमान में मानक ऐप में संग्रहीत गुप्त कुंजी के साथ मानक एलवीएल कोड और ऐप-साइड लाइसेंस चेक का उपयोग कर रहे हैं, तो ऊपर दिए गए स्केच के रूप में एक तंत्र में बदलना विशाल सुधार होगा (मानक एलवीएल को हटाने के लिए एक स्क्रिप्ट भी है ऐप्स से कोड जांचना)।

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