2012-05-14 6 views
0

Когда пользователь отменяет разрешение приложения через facebook, этот код должен попросить пользователя повторно авторизировать, однако это не так. Может ли кто-нибудь увидеть что-то не так? «facebook» - это объект Facebook.Android: Facebook Пользователь отменяет разрешение, не разрешает

public void facebookSetup() { 
    mPrefs = getPreferences(MODE_PRIVATE); 
    String access_token = mPrefs.getString("access_token", null); //load an access token from sharedPreferences 
    long expires = mPrefs.getLong("access_expires", 0);  //do the same for the token expiration time 

    if (access_token != null) { //if the access token exists in sharedPreferences, we'll use it 
     facebook.setAccessToken(access_token); 
    } 
    if (expires != 0) { //if the expiration time exists in shared preferences, use it 
     facebook.setAccessExpires(expires); 
    } 

    if (!facebook.isSessionValid()) { 
     facebook.authorize(this, new String[] { "email", "publish_stream", "user_photos", "publish_actions"}, new DialogListener() { 
      @Override 
      public void onComplete(Bundle values) { 
       SharedPreferences.Editor editor = mPrefs.edit(); 
       editor.putString("access_token", facebook.getAccessToken()); 
       editor.putLong("access_expires", facebook.getAccessExpires()); 
       editor.commit(); 
      } 
      @Override 
      public void onFacebookError(FacebookError error) {} 

      @Override 
      public void onError(DialogError e) {} 

      @Override 
      public void onCancel() {} 
     }); 
    } 
} 

ответ

0

Это то, что говорят Facebook SDK документы:

Вы можете обнаружить ошибки маркера доступа путем проверки параметра метода OnComplete ответа . В этом случае вам снова понадобится , чтобы вызвать facebook.authorize(), чтобы повторно аутентифицировать пользователя и создать новый токен доступа.

Чтобы обнаружить такие ситаутоны, вам необходимо проверить ответ своих звонков на Facebook. Например:

JSONObject responseJSON = new JSONObject(response); 
JSONObject errorJSON = responseJSON.optJSONObject("error"); 
if (errorJSON!=null) { 
    String error =errorJSON.optString("type");   
    if (error!=null && error.equals("OAuthException")) {  
     facebook.authorize(activity, FACEBOOK_PERMISSIONS, facebookDialogListener); 
     return; 
    }  
}