2015-12-05 13 views
9

parse.com'un Android API'sini kullanıyorum ve Facebook/Twitter giriş desteği ekledim. Bu iyi çalışıyor.Çıkış yapın veya Hesabı Değiştirin Parse Twitter/Facebook ile Kimlik Doğrulama

Zor bölüm, oturumunu kapatan olarak görünmektedir. Facebook

ParseTwitterUtils.logIn(UserLoginActivity.this, twitterLoginCallback); 

Veya kullanarak: benim twitter kimlik bilgilerini girin ve ardından izin vermek veya reddetmek için bir web iletişim isteniyor

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

Ben Twitter kullanan Uygulamamda giriş yapıyorsanız

uygulamanıza erişim. İzin verdikten sonra, başarılı bir şekilde oturum açabiliyorum ve ekran ismime erişebiliyorum. Herşey iyi!

benim ParseUser ait üzerinden oturum açmaya

, ben yapılıyor. Ancak, Facebook ya da Twitter giriş düğmesine tekrar tıklarsam, önceki hesabım olarak önceden kimlik doğrulaması yapılır, hesapları değiştiremem.

denedim

:

  • Chrome ve Tarayıcı Denetleme ve ne Twitter kaydedilir. yerli Twitter/Facebook uygulaması üzerinden açılıyor

My giriş mantık olarak basitçe başladı: Başvurumu kaldırma

  • denedi Twitter için

    ParseUser.logOut(); 
    

    - Bunu tamir yapar ama ideal bir çözüm değil. https://stackoverflow.com/a/34052718/494356: Burada önerildiği gibi https://stackoverflow.com/a/26338326/494356

  • Twitter hesabı bağlantısının kaldırılması: burada önerildiği gibi
  • benim Application yılında Parse.enableLocalDatastore(this); arayarak değil. Bu, her seferinde yeni bir ParseUser oluşturmanın kötü yan etkisine de sahiptir (ancak yine de aynı Twitter hesabı için)
  • https://stackoverflow.com/a/27714159/494356 burada önerildiği gibi 'Salt Okunur' ve 'Oku ve Yaz' seçeneklerini değiştirmeyi denedim. Benim uygulaması kaldırılıyor
  • ben denedim Facebook için null ParseTwitterUtils.getTwitter().setAuthToken(null); ParseTwitterUtils.getTwitter().setAuthTokenSecret(null);

  • için Kimlik Doğrulama Simgesi ayarı denedim (Neden bu zaten gerçekten bana mantıklı değil önemli olur) - Bu sorunu çözmez.Facebook SDK Çıkış Özelliklerini Kullanma
  • : here önerildiği gibi bir Session.closeAndClearTokenInformation() olması için kullanılır

    AccessToken.setCurrentAccessToken(null);

    Profile.setCurrentProfile(null);

    LoginManager.getInstance().logOut();

  • . Ancak Facebook'un Deprecated the Session class'u var ve artık SDK'da değil.

  • Facebook hesabının here önerildiği şekilde kaldırılması. Yine bu yinelenen ParseUsers neden olur ve hala kayıtlı kimlik bilgilerini kullanarak giriş yapabiliyorum.

Gerçekten herhangi bir cevap veya öneri için minnettar olurum. Sadece Twitter ya da Facebook için cevap verebiliyor olsanız bile, ikisini de duymaktan hoşlanmaya devam ediyorum.

+1

Yanıtınız, uygulamanız için kullanım durumunuz hakkındaki diğer benzer sorudaki cevabından bahsettiğinizden beri merak ediyorum. Hangi davranışa sahip olmak istersiniz? Ayrıştırıcı kullanıcının her zaman aynı kalmasını ve aynı ayrıştırma kullanıcısına ulaşmak için birden çok twitter hesabı kullanmasını ister misiniz? Bu sadece test amaçlı mı? Temel olarak, hangi tür uygulamaların, kullanıcılarınızın tanımladığınız eylemleri gerçekleştirmesini istediğini anlamakta sorun yaşıyorum. – craigts

+0

@craigts Kullanım durumum şudur: Uygulamayı kullanmak için Twitter hesabımla giriş yapmak istiyorum. Arkadaşım geliyor ve denemek istiyor. Uygulamamdan çıkış yaptım ve arkadaşım onların twitter hesabını kullanarak giriş yapabilir. Arkadaşım işaretlendiğinde, ikimizden biri tekrar giriş yaparsa, orijinal hesabımızı alırız. – Khalos

+1

belgelerine daldırma kesinlikle parse gibi görünüyor bu senaryoyu desteklemiyor. Ben bu soruna özel tek çözümler düşünüyorum 1) Bu kullanım davayı uygulamak için Ayrıştırma, 2) Parse kodu kendiniz değiştirmek veya 3) Twitter ve Facebook auth elle kendiniz işlemek. Bu sorunu ortadan kaldıran bir öneri, uygulamanızın kendisini indirip denemek için senaryodaki "arkadaş" ın daha anlamlı olmasını sağlayacak şekilde uygulamanızı denemek ve kurmaktır. Belki hem kullanıcıya hem de arkadaşlarına bir çeşit teşvik sunuyoruz. – craigts

cevap

0

Uygulamamızda, giriş/çıkış işlemleri, Facebook, E-Mail ve hatta kendi oluşturulmuş bir google girişi için iyi çalışır. İlk bakışta gördüğüm farklılıkları anlatabilirim ve belki de sizin için hile yapar.

Öncelikle, ParseUser örneğiyle doğrudan kodumuzda çalışmaz, ancak ParseUser'u genişleten bir MyUser sınıfına sahip oluruz. Tüm giriş mantığının ikinci bir arka plan hizmetinde kapsüllenmiş ve doğrudan Etkinliğimizde çağrılmadı. Muhtemelen problemi çözmeyecek. Ancak, arka planda hizmette, MyUser örneğini de önbelleğe alırız, eğer ihtiyacımız olursa onu alırız ve bu örneği kullanıcıdan çıkış yapmak için kullanırız (MyUser.logOut()). Ve çıkıştan sonra null olarak ayarlanmıştır.

Son fakat en az değil: En son Parse SDK sürümlerini mi çalıştırıyorsunuz?

+0

Ayrıca, ParseUser işlevini genişleten bir sınıfa sahibim. 'LogOutInBackground()' işlevini çağırmak, bir Etkinlik veya Hizmette çağrıldığının aynısı olmalıdır, ancak ben bunu denemeliyim. Parse SDK'nın en son sürümünü kullanıyorum (1.11.0). – Khalos