Отмяната на разрешението за приложение за Android не изчистване на токена за достъп до Facebook

Имам дейност, наречена StarterActivity, която е дейността за стартиране на моето приложение за Android. Предоставих опция от менюто за излизане, при натискане на която отменям всички разрешения на приложения. Проверих, че всички разрешения се отменят и приложението ми вече не е посочено в https://www.facebook.com/settings?tab=applications

Означението за достъп обаче не се изчиства.

    switch(item.getItemId())
    {
        case R.id.action_logout:
            GraphRequest delPermRequest = new GraphRequest(AccessToken.getCurrentAccessToken(), "/{user-id}/permissions/", null, HttpMethod.DELETE, new GraphRequest.Callback() {
                @Override
                public void onCompleted(GraphResponse graphResponse) {
                    if(graphResponse!=null){
                        FacebookRequestError error =graphResponse.getError();
                        if(error!=null){
                            Log.e(TAG, error.toString());
                        }else {
                            finish();
                        }
                    }
                }
            });
            Log.d(TAG,"Executing revoke permissions with graph path" + delPermRequest.getGraphPath());
            delPermRequest.executeAsync();
            break;
    }

Искам да рестартирам своето намерение за StarterActivity отново при излизане.

добавих

startActivity(new Intent(getApplicationContext(),StarterActivity.class));

след изчистване на разрешенията. Но нито AccessToken.getCurrentAccessToken(), нито Profile.getCurrentProfile() е нула. Може би получаване на пари?

Аз също опитах

    AccessTokenTracker accessTokenTracker = new AccessTokenTracker() {
        @Override
        protected void onCurrentAccessTokenChanged(
                AccessToken oldAccessToken,
                AccessToken currentAccessToken) {

            Log.d(TAG,"Access token changed");

            if (currentAccessToken == null){
                //User logged out
                startActivity(new Intent(getApplicationContext(),StarterActivity.class));
            }
        }
    };

Но никой от тях изглежда не работи. Токенът за достъп не е изчистен. Как мога да обезсиля тези данни, ако бъдат осребрени? Надявах се да се изчисти при отнемане на разрешения? Или има по-изчистен начин за излизане?

Използвам SDK 4.x. Повече подробности за perm - https://developers.facebook.com/docs/graph-api/reference/user/permissions


person Aniket Thakur    schedule 09.08.2015    source източник
comment
Опитвали ли сте да излезете по този начин: LoginManager.getInstance().logOut();   -  person sider    schedule 09.08.2015
comment
Да, очевидно трябва ръчно да зададем профил и токен като нулеви. LoginManager.getInstance().logOut(); Също така прави същото отдолу. Благодаря за бакшиша.   -  person Aniket Thakur    schedule 09.08.2015


Отговори (1)


Това, което най-накрая проработи, беше

LoginManager.getInstance().logOut();

Това, което прави вътрешно, е да зададе всеки маркер за достъп и профил на нула

public void logOut() {
    AccessToken.setCurrentAccessToken((AccessToken)null);
    Profile.setCurrentProfile((Profile)null);
}

Само отнемане на разрешение няма да свърши работа. Можете ръчно да зададете токен и профил като null или да използвате горепосочения API.

person Aniket Thakur    schedule 09.08.2015
comment
Възможно ли е да се установи, когато потребителят излезе от приложението Facebook, така че моето приложение също да може да излезе (изтрие токена)? - person Josh; 08.08.2016