অ্যান্ড্রয়েডের জন্য ফেসবুক এসডিকে 4 - কীভাবে প্রোগ্রাম থেকে লগ আউট করবেন


112

সম্প্রতি, ফেসবুক নতুন এবং দুর্দান্ত আপডেটের সাথে এসডিকে 4 প্রকাশ করেছে। আমি নতুন বৈশিষ্ট্যগুলি ব্যবহার করতে SDK4 এ স্যুইচ করার চেষ্টা করেছি, তবে আমি ফেসবুকের লগইন বৈশিষ্ট্যটির সাথে লড়াই করছি।

এখন পর্যন্ত, প্রোগ্রামে ফেসবুক লগ আউট করতে, আমি ব্যবহার করেছি:

Session session = Session.getActiveSession();
session.closeAndClearTokenInformation();

তবে SDK4 সেশনটিকে আর সমর্থন করবে না বলে মনে হচ্ছে এবং অফিসিয়াল ডক্সে তারা উল্লেখ করেছে:

অ্যান্ড্রয়েডে ফেসবুক লগইন প্রয়োগের দুটি উপায় রয়েছে:

লগইনবটন ক্লাস - যা আপনার ইউআইতে যোগ করতে পারেন এমন একটি বোতাম সরবরাহ করে। এটি বর্তমান অ্যাক্সেস টোকেন অনুসরণ করে এবং লোকেদের ভিতরে এবং বাইরে লগ করতে পারে।

ঠিক আছে, মনে হচ্ছে লগইনবটন ব্যবহার করা ছাড়া প্রোগ্রামগতভাবে ফেসবুক লগ আউট করার উপায় নেই। কারও কোনও ধারণা আছে, দয়া করে এখানে ভাগ করুন।

উত্তর:


276

আপনি LoginManager.getInstance().logOut();লগইনবটন ব্যবহার করলেও আপনি ব্যবহার করতে পারেন কারণ এটি

এই ইউআই উপাদানটি লগইনম্যানেজারে উপলব্ধ কার্যকারিতা মোড় করে।

সম্পাদনা: কেবল এটি উল্লেখ করার জন্য যে এটি ফেসবুক এসডিকে ভি 4 এর জন্য কাজ করে । ভবিষ্যতে তারা এটিকে পরিবর্তন করবে কিনা জানি না।

@ যেমন ব্যাটআউটফেল উল্লেখ করেছেন, ফেসবুক এসডিকে FacebookSdk.sdkInitialize(getApplicationContext());আরম্ভ করতে ভুলবেন না । দয়া করে দেখুন এখানে বিস্তারিত জানার জন্য।


2
আমি উল্লেখ করতে চাই যেহেতু এটি শীর্ষস্থানীয় গুগল ফলাফল, আমি এই লাইনটি প্রথম না যুক্ত হওয়া পর্যন্ত লগ আউট করার চেষ্টা করার সময় আমার অ্যাপটি ক্র্যাশ হয়ে গেছে: ফেসবুকসডক.এসডিকিআইনিটিয়ালাইজ (this.getApplicationContext ()); । LoginManager.getInstance () লগ-আউট ();
ব্যাটআউটফেল

7
লগআউট করার পরে এটি আমাকে আবার লগইন করতে দেয় না। আমি লগইনম্যানেজ.জেটআইনস্ট্যান্স ()। লগআউট () করার পরে আবার লগইন করার কোনও উপায় আছে কি?
অ্যান্ড্রয়েড ডেভ

1
ইতিমধ্যে অনক্রিটে আরম্ভ করা হওয়ায় আমাদের কেন ফেসবুকএসডিকে.এসডিকিআইনাইটালাইজ বলা উচিত?
কুলমাইন্ড

1
লগইনম্যানএজ.আরলগআউট () আমি এটি ব্যবহার করেছি, এটি সঠিকভাবে কাজ করে
এরুম

1
@ এরাম LoginManager.logOut()এফবি এসডিকে v4.23.0 তে এখন পর্যন্ত তেমন কোনও পদ্ধতি নেই
রত্ন

61

এসডিকে 4, আপনি যদি পুরোপুরি ডি-কাপল করতে চান তবে নিশ্চিত হয়ে নিন যে আপনি ব্যবহারকারীর ফেসবুক অ্যাকাউন্ট থেকে অ্যাপটি সরিয়ে ফেলেছেন। এই পদ্ধতিটি ব্যবহারকারীকে সম্পূর্ণ সংযোগ বিচ্ছিন্ন করে:

public void disconnectFromFacebook() {

    if (AccessToken.getCurrentAccessToken() == null) {
        return; // already logged out
    }

    new GraphRequest(AccessToken.getCurrentAccessToken(), "/me/permissions/", null, HttpMethod.DELETE, new GraphRequest
            .Callback() {
        @Override
        public void onCompleted(GraphResponse graphResponse) {

            LoginManager.getInstance().logOut();

        }
    }).executeAsync();
}

এটাই আমি চেয়েছিলাম!
সাশ_কেপি

তার মানে আমার অ্যাপ্লিকেশনটির জন্য সম্পূর্ণ লগআউট করার জন্য আমাকে অবশ্যই ফেসবুক অ্যাপ এবং ফেসবুক বার্তাটি মুছে ফেলতে হবে?
ফোঙ্গভান

1
এই উত্তরটি ব্যবহারকারীকে সম্পূর্ণরূপে লগ আউট করা নিশ্চিত করে। কেবল 100% হওয়ার জন্য এটি ফেসবুকসডক.এসডিকিআইএনটিয়ালাইজ (getapplicationContext ()) অন্তর্ভুক্ত করা প্রয়োজন;
সান্দ্রো উইগার্স 25:58 এ 2

কলব্যাকে আমি @ ওভাররাইড পাবলিক শূন্য অনকম্পটেড (গ্রাফরেস্পোনস গ্রাফেরেস্পোনস) যুক্ত করেছি {অ্যাকসেসটোকেন.সেটকন্টরআ্যাকসেসটোকেন (নাল); । LoginManager.getInstance () লগ-আউট (); ।
সান্দ্রো উইগার্স

1
@voghDev অন কমপ্লিটড আমি বিশ্বাস করি যে UI থ্রেডে ফিরে আসবে না, সুতরাং আপনি যখন লগআউটকে কল করবেন তখন এটি ব্লক করে না।
ফ্রাঙ্ক

9

তুমি ব্যবহার করতে পার LoginManager.logOut()

পরীক্ষা করে দেখুন https://developers.facebook.com/docs/reference/android/current/class/LoginManager/


2
আপনি যদি লগইনম্যানেজার ব্যবহার করেন তবে এটি কাজ করে। লগইনবটন ব্যবহার করার সময় প্রোগ্রামে লগআউট করার কোনও উপায় আছে কি?
সংগীতায়িত হয়েছে

লগইনবটন ব্যবহার করার সময় আমরা কীভাবে লগআউট করতে পারি তা জানতে চাই
সারথ

কেবল লগইনবটনটি ব্যবহার করুন, আবার ক্লিক করুন তবে তা লগ আউট হবে
16'7

7

লগইনবটন দিয়ে এটি পরিচালনা করতে:

//Check if user is currently logged in
        if (AccessToken.getCurrentAccessToken() != null && com.facebook.Profile.getCurrentProfile() != null){
            //Logged in so show the login button
            fbLogin.setVisibility(View.VISIBLE);
            fbLogin.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View view) {
//log out
                    LoginManager.getInstance().logOut();
                    gotoLogin();
                }
            });
        }

আরে স্টিভী, যখন আমি লগআউট () পদ্ধতিটি কল করেছি যেমন আপনি নিজের উত্তরে উল্লেখ করেছেন তখন এটি আমাকে ত্রুটি দিয়েছিল "java.lang.SecurityException: Permission অস্বীকার: ব্যবহারকারীর জন্য সেট / সেট সেটিং -2 ব্যবহারকারী হিসাবে চালানোর জন্য জিজ্ঞাসা করে তবে ব্যবহারকারী থেকে কল করছে 0; "। এটি আমাকে ম্যানিফেস্ট ফাইলে একটি অনুমতি যুক্ত করতে বলছে। আমি কীভাবে এটি সমাধান করতে পারি কারণ লগআউটটি স্বাভাবিক পদ্ধতি হওয়া উচিত বলে আমি এই অনুমতিটি দিতে চাই না।
আদিত্য

@ আদিত্য আপনার কাছে কেবল অ্যাপটির জন্য ইন্টারনেটের অনুমতি প্রয়োজন। <uses-permission android:name="android.permission.INTERNET" />
স্টিফেন

তবে আমি এটিকে যুক্ত না করলে, আমি ত্রুটি ছাড়িয়ে যাচ্ছি। সম্ভব হলে আপনি কি দয়া করে এমন একটি ফেসবুকের নমুনা ভাগ করতে পারেন যার কাস্টম লগইন বোতাম এবং কাস্টম লগআউট বোতাম আছে ??
আদিত্য

@ অদিত্য এই উদাহরণে আমি ফেসবুক লগইন বোতামটি ব্যবহার করছি
স্টিফেন

4

আপনি লগইনম্যানেজার ব্যবহার করে লগআউট করতে পারেন তবে আপনাকে গ্রাফের অনুরোধটিও ব্যবহার করতে হবে। আমি সম্পূর্ণরূপে লগ আউট সম্পর্কে কথা বলছি, পরের বার আপনি বিভিন্ন অ্যাকাউন্টে লগইন করতে পারেন।

new GraphRequest(AccessToken.getCurrentAccessToken(), "/me/permissions/", null, HttpMethod.DELETE, new GraphRequest
            .Callback() {
        @Override
        public void onCompleted(GraphResponse graphResponse) {

            SharedPreferences pref = DashBoard.this.getPreferences(Context.MODE_PRIVATE);
            SharedPreferences.Editor editor = pref.edit();
            editor.clear();
            editor.commit();
            LoginManager.getInstance().logOut();

            Intent logoutint = new Intent(DashBoard.this,MainActivity.class);
            logoutint.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
               startActivity(logoutint);

        }
    }).executeAsync();

এখানে ভাগ করা পছন্দগুলির সাহায্যে আপনি সম্পূর্ণ লগআউট করতে পারেন এবং পরের বার আপনি বিভিন্ন অ্যাকাউন্টে লগইন করতে পারেন।


1

ফ্র্যাঙ্ক সংস্করণ কোটলিন:

 fun disconnectFromFacebook() {
    if (AccessToken.getCurrentAccessToken() == null) {
        return  // already logged out
    }
    GraphRequest(
        AccessToken.getCurrentAccessToken(),
        "/me/permissions/",
        null,
        HttpMethod.DELETE,
        GraphRequest.Callback {
            LoginManager.getInstance().logOut()
        }).executeAsync()
}
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.