it-swarm-vi.com

Facebook SDK 4 cho Android - cách đăng xuất theo chương trình

Gần đây, Facebook đã phát hành SDK 4 với các bản cập nhật mới và hay. Tôi đã cố gắng chuyển sang SDK4 để sử dụng các tính năng mới, tuy nhiên, tôi đang vật lộn với tính năng Đăng nhập của Facebook.

Cho đến nay, để đăng xuất Facebook theo chương trình, tôi đã sử dụng:

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

Nhưng SDK4 dường như không hỗ trợ Phiên nữa và trong các tài liệu chính thức, họ đề cập:

Có hai cách để thực hiện đăng nhập Facebook trên Android:

Lớp LoginButton - Cung cấp một nút bạn có thể thêm vào giao diện người dùng của mình. Nó theo mã thông báo truy cập hiện tại và có thể đăng nhập mọi người vào và ra.

Chà, dường như không có cách nào để đăng xuất Facebook bằng lập trình ngoại trừ sử dụng LoginButton. Bất cứ ai có ý tưởng, xin vui lòng chia sẻ nó ở đây.

102
franco phong

Bạn có thể sử dụng LoginManager.getInstance().logOut();, ngay cả khi bạn sử dụng nút Đăng nhập vì

Phần tử UI này bao bọc chức năng có sẵn trong Trình quản lý đăng nhập.

EDIT: Chỉ cần đề cập rằng điều này hoạt động cho SDK Facebook v4 . Tôi không biết liệu họ có thay đổi nó trong tương lai không.

@as batoutofhell đề cập, đừng quên đặt FacebookSdk.sdkInitialize(getApplicationContext()); để khởi tạo sdk facebook. Vui lòng xem tại đây để biết chi tiết.

259
stackex

SDK4, nếu bạn muốn hủy ghép đôi hoàn toàn, hãy đảm bảo bạn cũng xóa ứng dụng khỏi tài khoản facebook của người dùng. Phương pháp này ngắt kết nối người dùng hoàn toàn:

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();
}
59
Frank

Bạn có thể sử dụng LoginManager.logOut()

Hãy xem https://developers.facebook.com/docs/reference/Android/civerse/ class/LoginManager /

9
Chris Pan

Để xử lý nó với loginButton:

//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();
                }
            });
        }
7
surfer190

Bạn có thể đăng xuất bằng cách sử dụng LoginManager nhưng bạn cũng phải sử dụng biểu đồ yêu cầu. Tôi đang nói về việc đăng xuất hoàn toàn vì vậy, lần sau bạn có thể đăng nhập bằng tài khoản khác.

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();

Bằng sự trợ giúp của các tùy chọn được chia sẻ ở đây, bạn có thể đăng xuất hoàn toàn và lần sau bạn có thể đăng nhập bằng tài khoản khác.

3
Ritesh Jha