0

LoginViaFacebook アクティビティと facebook Login のログイン ボタンがあります。次のコードを使用して facebook にログインします。

private String[] permissions = {"publish_stream",
        "read_stream", "user_photos", "publish_checkins", "photo_upload",
        "email", "user_birthday" };

if (access_token != null) {
        Utility.fb.setAccessToken(access_token);
        token = access_token;

        Log.e("OnCretae Facebook Token------------", token);
    }
    if (expires != 0) {
        Utility.fb.setAccessExpires(expires);
    }

    btn_login.setOnClickListener(new OnClickListener() {

        @Override
        public void onClick(View arg0) {
            // TODO Auto-generated method stub

            if (CheckInternet.checkConn(LoginViaFacebook.this)) {

                Utility.fb.authorize(LoginViaFacebook.this, permissions,
                        new DialogListener() {

                            @Override
                            public void onFacebookError(FacebookError e) {
                                // TODO Auto-generated method stub
                                Toast.makeText(getApplicationContext(),
                                        "onFacebookError",
                                        Toast.LENGTH_LONG).show();
                                Log.e("Sajolllllllllllllllll", e + "");
                            }

                            @Override
                            public void onError(DialogError e) {
                                // TODO Auto-generated method stub
                                Toast.makeText(getApplicationContext(),
                                        "onError", Toast.LENGTH_LONG)
                                        .show();
                                Log.e("Sajolllllllllllllllll", e + "");
                            }

                            @Override
                            public void onComplete(Bundle values) {
                                // TODO Auto-generated method stub
                                editor = sp.edit();
                                token = Utility.fb.getAccessToken();

                                Log.e("Token---------", token);
                                editor.putString("access_token",
                                        Utility.fb.getAccessToken());
                                editor.putLong("access_expires",
                                        Utility.fb.getAccessExpires());
                                editor.commit();
                                Toast.makeText(getApplicationContext(),
                                        "Login Successful",
                                        Toast.LENGTH_LONG).show();
                                mProgress = ProgressDialog.show(
                                        LoginViaFacebook.this, "",
                                        "Please Wait...", true);
                                Thread t = new Thread(retriveProfileData);
                                t.start();

                            }

                            @Override
                            public void onCancel() {
                                // TODO Auto-generated method stub
                                Toast.makeText(getApplicationContext(),
                                        "onCancel", Toast.LENGTH_LONG)
                                        .show();

                            }
                        });
            }

        }
    });

ユーザーがログアウトしない場合は、次回ログインするためにアクセストークンを保存します

設定という別のアクティビティがあり、ログアウトボタンがあります。次のコードを使用してfacebookからログアウトします

lagoutLayout.setOnClickListener(new OnClickListener() {

        @Override
        public void onClick(View arg0) {
            // TODO Auto-generated method stub
            final String[] items = new String[] { "Yes", "No" };
            ArrayAdapter<String> adapter = new ArrayAdapter<String>(
                    SettingsActivity.this,
                    android.R.layout.select_dialog_item, items);

            AlertDialog.Builder builder = new AlertDialog.Builder(
                    SettingsActivity.this);

            builder.setTitle("Select Option");
            builder.setAdapter(adapter,
                    new DialogInterface.OnClickListener() {
                        public void onClick(DialogInterface dialog, int item) { // pick

                            // from
                            // camera
                            if (item == 0) {

                                try {
                                    editor.remove("FacebookId");
                                    editor.remove("EmailId");
                                    editor.commit();

                                    Log.e("Pre----------------", sp1
                                            .getString("access_token", "d"));
                                    editor1.remove("access_token");
                                    editor1.remove("access_expires");
                                    editor1.commit();

                                    Log.e("After----------------", sp1
                                            .getString("access_token", "d"));

                                    Log.e("DATATTAT--------",
                                            sp.getString("FacebookId",
                                                    "saf")
                                                    + "  "
                                                    + sp.getString(
                                                            "EmailId", "as"));
                                    String r = Utility.fb
                                            .logout(SettingsActivity.this);
                                    Log.e("Res-----------", r);
                                } catch (MalformedURLException e) {
                                    // TODO Auto-generated catch block
                                    e.printStackTrace();
                                } catch (IOException e) {
                                    // TODO Auto-generated catch block
                                    e.printStackTrace();
                                }

                            } else { // pick from file

                                dialog.dismiss();
                            }
                        }
                    });

            dialog = builder.create();

            dialog.show();

        }

    });

Facebook Logout メソッドからの応答は、ログに true を示します。しかし、アプリケーションを再度実行すると、Facebook に自動的にログインします。問題が見つかりません。助けてください。

4

5 に答える 5

1

For facebook sdk version 3 above

public void logoutFacebook() {
    Session session = Session.getActiveSession();
    if(session != null && session.isOpened()){
        session.closeAndClearTokenInformation();
    }
}
于 2014-09-26T07:51:45.717 に答える
1

私はこのコードを使用していますが、うまくいきました

     public void logout() {
    if (!isConnected(activity)) {
        Toast.makeText(activity, "Internet not connected", Toast.LENGTH_LONG).show();
        return;
    }
    SessionEvents.onLogoutBegin();
    AsyncFacebookRunner asyncRunner = new AsyncFacebookRunner(this.facebook);
    asyncRunner.logout(this.context, new LogoutRequestListener());
}

そして、これがリスナーです

    public class LogoutRequestListener extends BaseRequestListener {
    public void onComplete(String response, final Object state) {
        // callback should be run in the original thread, 
        // not the background thread
        mHandler.post(new Runnable() {
            public void run() {
                SessionEvents.onLogoutFinish();
                Intent intent= new Intent(activity,Login.class);
                activity.startActivity(intent);
                activity.finish();
            }
        });
    }
}
于 2013-02-12T07:17:53.943 に答える
0

これを試して :

これがあなたの助けになることを願っています...

if (mFacebook.isSessionValid()) {
    try {
        String str = mFacebook.logout(getApplicationContext());
        SessionStore.clear(getApplicationContext());
    } catch (MalformedURLException e) {                     
        e.printStackTrace();
    } catch (IOException e) {
        e.printStackTrace();
    }
}
于 2013-02-12T08:57:51.467 に答える