2015-08-09 171 views
0

我有一個活動叫做StarterActivity這是我的android應用程序的啓動器活動。我已經提供了一個註銷菜單選項,其中我撤消了所有的應用程序權限。我驗證了所有權限都已被撤銷,並且我的應用不再列在https://www.facebook.com/settings?tab=applications撤消android應用程序的權限不清除Facebook訪問令牌

但是,訪問令牌未被清除。

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.在燙髮的更多細節 - https://developers.facebook.com/docs/graph-api/reference/user/permissions

+0

您是否試過用這種方式註銷: LoginManager.getInstance()。logOut(); – sider

+0

是的,顯然我們必須手動設置配置文件和標記爲空。 'LoginManager.getInstance()。logOut();'也在下面做同樣的事情。謝謝你的提示。 –

回答

1

什麼終於研究出了

LoginManager.getInstance().logOut(); 

什麼它在內部所做的是設置每個訪問令牌和配置文件設置爲null

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

就撤銷許可不會做。您可以手動將標記和配置文件設置爲空或使用上面的API。

+1

是否有可能檢測到用戶從Facebook應用程序註銷時,所以我的應用程序也可以註銷(刪除令牌)? – Josh

相關問題