2016-03-28 6 views
2

Я реализовал логин facebook для андроида в соответствии с их документациейдиалоговое окно Войти Facebook снова появится после входа в

Проблема заключается в том, что после того, как пользователь, введите свои учетные данные (диалоговые 1) для входа в систему и подтвердить разрешения для приложения (2 диалог) facebook connect просто вернется в диалог (1), где его запрос снова будет указан. почему это происходит?

В пользователь facebook я могу увидеть приложение в списке приложений

Это мой код:

CallbackManager callbackManager = CallbackManager.Factory.create(); 
    LoginButton loginButton = (LoginButton) findViewById(R.id.login_button); 
    loginButton.setReadPermissions("public_profile","user_friends"); 
    // Callback registration 
    loginButton.registerCallback(callbackManager, new FacebookCallback<LoginResult>() { 
     @Override 
     public void onSuccess(LoginResult loginResult) { 
      // App code 
      Log.i(Utils.TAG,"succesfull login to facebook"); 

      // App code 
      GraphRequest request = GraphRequest.newMeRequest(
        loginResult.getAccessToken(), 
        new GraphRequest.GraphJSONObjectCallback() { 
         @Override 
         public void onCompleted(JSONObject object, GraphResponse response) { 
          Log.i("LoginActivity", response.toString()); 

          try { 
          }catch (Exception e) 
          { Log.i(Utils.TAG, e.getMessage()); 
          } 
         } 
        }); 
     } 

     @Override 
     public void onCancel() { 
      // App code 
      Log.i(Utils.TAG,"onCancel login to facebook"); 
     } 

     @Override 
     public void onError(FacebookException exception) { 
      // App code 
      Log.i(Utils.TAG,"onError login to facebook"); 
      Log.i(Utils.TAG,exception.getMessage()); 
     } 
    }); 



    loginButton.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View view) { 
    //  LoginManager.getInstance().logInWithReadPermissions((Activity)m_context, Arrays.asList("public_profile", "email", "user_birthday", "user_friends")); 
      LoginManager.getInstance().logInWithReadPermissions((Activity)m_context, Arrays.asList("public_profile", "user_friends")); 
     } 
    }); 


} 

@Override 
protected void onActivityResult(int requestCode, int resultCode, Intent data) { 
    Log.i(Utils.TAG,"onActivityResult called"); 
    super.onActivityResult(requestCode, resultCode, data); 
    callbackManager.onActivityResult(requestCode, resultCode, data); 
} 

Следует отметить, что ни один из спинок вызова не вызывается во время потока входа только тогда, когда я увольняю диалог

ответ

2

Да, это потому, что вы используете кнопку входа в систему и менеджер входа в систему. Вы должны выбрать только один из них .. потому что они оба имеют одинаковую функциональность. Я предлагаю вам удалить код Диспетчера регистрации здесь.

loginButton.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View view) { 
     //  LoginManager.getInstance().logInWithReadPermissions((Activity)m_context, Arrays.asList("public_profile", "email", "user_birthday", "user_friends")); 
       LoginManager.getInstance().logInWithReadPermissions((Activity)m_context, Arrays.asList("public_profile", "user_friends")); 
      } 
     }); 

и

oginButton.registerCallback(callbackManager, new FacebookCallback<LoginResult>() { 
     @Override 
     public void onSuccess(LoginResult loginResult) { 
      // App code 
      Log.i(Utils.TAG,"succesfull login to facebook"); 

      // App code 
      GraphRequest request = GraphRequest.newMeRequest(
        loginResult.getAccessToken(), 
        new GraphRequest.GraphJSONObjectCallback() { 
         @Override 
         public void onCompleted(JSONObject object, GraphResponse response) { 
          Log.i("LoginActivity", response.toString()); 

          try { 
          }catch (Exception e) 
          { Log.i(Utils.TAG, e.getMessage()); 
          } 
         } 
        }); 
     } 

     @Override 
     public void onCancel() { 
      // App code 
      Log.i(Utils.TAG,"onCancel login to facebook"); 
     } 

     @Override 
     public void onError(FacebookException exception) { 
      // App code 
      Log.i(Utils.TAG,"onError login to facebook"); 
      Log.i(Utils.TAG,exception.getMessage()); 
     } 
    }); 
0

Это потому, что facebook Войти апи использует браузер Chrome. После входа в систему один раз браузер Chrome хранит это. Если вы выйдете из facebook в браузере Chrome, может появиться диалог «1».