2015-12-05 13 views
9

का उपयोग कर लॉग आउट या स्विच खाते मैं parse.com के एंड्रॉइड एपीआई का उपयोग कर रहा हूं और फेसबुक/ट्विटर लॉगिन समर्थन जोड़ा है। यह ठीक काम कर रहा है।पार्स ट्विटर/फेसबुक प्रमाणीकरण

मुश्किल भाग लॉग आउट कर रहा है।

अगर मैं ट्विटर का उपयोग कर मेरे एप्लिकेशन में लॉगिन:

ParseTwitterUtils.logIn(UserLoginActivity.this, twitterLoginCallback); 

या इसका उपयोग करते फेसबुक:

ParseFacebookUtils.logInWithReadPermissionsInBackground(UserLoginActivity.this, null, facebookLoginCallback); 

मैं एक वेब संवाद में संकेत कर रहा हूँ मेरी चहचहाना क्रेडेंशियल दर्ज करें और फिर अनुमति देते हैं या अस्वीकार करने के लिए मेरे ऐप तक पहुंच एक बार जब मैं इसे अनुमति देता हूं, तो मैं सफलतापूर्वक लॉग इन करने में सक्षम हूं और मेरे पास मेरे स्क्रीन नाम तक पहुंच है। सब ठीक हैं!

जब मैं बाहर मेरी ParseUser कीप्रवेश करने का प्रयास, मैं लॉग आउट मिलता है। हालांकि, अगर मैं फिर से फेसबुक या ट्विटर लॉगिन बटन पर क्लिक करता हूं, तो मैं अपने पिछले खाते के रूप में पूर्व-प्रमाणीकृत हूं, मैं खातों को स्विच नहीं कर सकता।

मैं कोशिश की है:

  • Chrome और ब्राउज़र जाँच हो रही है और न ही ट्विटर में लॉग इन कर रहे हैं।
  • देशी ट्विटर/फेसबुक ऐप निम्न से लॉग आउट

मेरा प्रवेश तर्क के रूप में बस शुरू कर दिया:

ParseUser.logOut(); 

ट्विटर के लिए मैं कोशिश की है

  • अपने आवेदन की स्थापना रद्द - यह तय करता है यह एक आदर्श समाधान नहीं है।
  • मेरी Application में Parse.enableLocalDatastore(this); कॉल नहीं के रूप में यहाँ का सुझाव दिया: https://stackoverflow.com/a/34052718/494356: के रूप में यहाँ का सुझाव दिया https://stackoverflow.com/a/26338326/494356
  • ट्विटर खाते का लिंक हटाना। प्रत्येक बार एक नया पार्सयूसर बनाने का भी बुरा दुष्प्रभाव होता है (लेकिन अभी भी एक ही ट्विटर खाते के लिए)
  • मैंने https://stackoverflow.com/a/27714159/494356 को सुझाए गए अनुसार 'केवल पढ़ने' से 'पढ़ें और लिखें' से अनुमतियों को बदलने का प्रयास किया है। (क्यों इस बात हैं वैसे भी वास्तव में मेरे लिए कोई मतलब नहीं है)
  • मैं null ParseTwitterUtils.getTwitter().setAuthToken(null); ParseTwitterUtils.getTwitter().setAuthTokenSecret(null);

फेसबुक के लिए मैं कोशिश की है

  • को AuthToken स्थापित करने की कोशिश की है अपने आवेदन की स्थापना रद्द - यह समस्या का समाधान करता है।
  • फेसबुक एसडीके लॉगआउट सुविधाओं का उपयोग करना:

    AccessToken.setCurrentAccessToken(null);

    Profile.setCurrentProfile(null);

    LoginManager.getInstance().logOut();

  • वहाँ सुझाव के रूप में here एक Session.closeAndClearTokenInformation() हुआ करता था। लेकिन फेसबुक में Deprecated the Session class है और यह अब एसडीके में नहीं है।

  • here सुझाए गए फेसबुक खाते को अनलिंक करना। फिर से यह डुप्लिकेट ParseUsers का कारण बनता है और मैं अभी भी सहेजे गए क्रेडेंशियल्स का उपयोग करके लॉग इन करने में सक्षम हूं।

मैं वास्तव में किसी भी उत्तर या सुझाव की सराहना करता हूं। भले ही आप केवल ट्विटर या फेसबुक के लिए जवाब दे सकें, लेकिन दोनों नहीं, मैं अभी भी इसे सुनना पसंद करूंगा।

+1

अब मैं उत्सुक हूं क्योंकि आपने अन्य समान प्रश्नों पर मेरे उत्तर का उल्लेख किया है कि आपके आवेदन के लिए आपका उपयोग केस क्या है? आप क्या व्यवहार करना चाहते हैं? क्या आप चाहते हैं कि पार्स उपयोगकर्ता हमेशा एक ही रहें और उपयोगकर्ता एक ही पार्स उपयोगकर्ता को प्राप्त करने के लिए एकाधिक ट्विटर खातों का उपयोग कर सके? क्या यह सिर्फ परीक्षण उद्देश्यों के लिए है? असल में मुझे यह समझने में परेशानी हो रही है कि किस प्रकार का एप्लिकेशन अपने उपयोगकर्ता को आपके द्वारा वर्णित कार्यों को निष्पादित करना होगा। – craigts

+0

@craigts मेरा उपयोग केस यह है: मैं ऐप का उपयोग करने के लिए अपने ट्विटर खाते से लॉग इन करना चाहता हूं। मेरा दोस्त साथ आता है और इसे आजमा देना चाहता है। मैं अपने ऐप से साइन आउट करता हूं, और मेरा मित्र अपने ट्विटर खाते का उपयोग करके साइन इन कर सकता है। जब मेरा दोस्त साइन आउट करता है, अगर हम में से कोई भी फिर से लॉग इन करता है, तो हमें अपना मूल खाता मिल जाता है। – Khalos

+1

दस्तावेज़ों में डाइविंग यह निश्चित रूप से लगता है कि पार्स इस परिदृश्य का समर्थन नहीं करता है। मुझे लगता है कि इस समस्या के लिए विशिष्ट समाधान 1) बग पार्स इस उपयोग के मामले को लागू करने के लिए है, 2) पार्स कोड स्वयं को बदलें, या 3) मैन्युअल रूप से ट्विटर और फेसबुक को स्वयं को संभालें। एक सुझाव जो इस समस्या से बचाता है, वह आपके ऐप को आजमाने और स्थापित करने के लिए होगा ताकि आपके परिदृश्य में 'मित्र' को डाउनलोड करने और ऐप को स्वयंमाने का अधिक अर्थ हो। शायद उपयोगकर्ता और उनके दोस्त दोनों को कुछ प्रकार की प्रोत्साहन प्रदान करें। – craigts

उत्तर

0

हमारे ऐप में लॉगिन/लॉगआउट प्रक्रिया फेसबुक, ई-मेल और यहां तक ​​कि एक स्वयं का निर्माण Google लॉगिन के लिए ठीक काम करती है। मैं आपको पहले रूप में देखे गए मतभेद बता सकता हूं और शायद इसमें से एक आपके लिए चाल है।

सबसे पहले हम सीधे हमारे कोड में ParseUser उदाहरण के साथ काम नहीं करते हैं, लेकिन कक्षा है जो ParseUser फैली हुई है। सभी लॉगिन तर्कों में से दूसरा पृष्ठभूमि सेवा में encapsulated है और सीधे हमारी गतिविधि में नहीं कहा जाता है। वह शायद समस्या को ठीक नहीं करेगा। लेकिन पृष्ठभूमि सेवा में हम MyUser उदाहरण भी कैश करते हैं, अगर हमें इसकी आवश्यकता होती है तो उसे पुनर्प्राप्त करें और उपयोगकर्ता को लॉगआउट करने के लिए उस उदाहरण का उपयोग करें (MyUser.logOut())। और यह लॉगआउट के बाद null पर सेट है।

अंतिम लेकिन कम से कम नहीं: क्या आप पार्स एसडीके के नवीनतम संस्करण चला रहे हैं?

+0

मेरे पास एक कक्षा भी है जो 'पारसेसर' को बढ़ाती है। 'LogOutInBackground()' को कॉल करना एक गतिविधि या सेवा में कहा जाता है या नहीं, लेकिन मैं इसे आज़मा दूंगा। मैं पार्स एसडीके (1.11.0) के नवीनतम संस्करण का उपयोग कर रहा हूं। – Khalos

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