Вход в Facebook в приложении для Android перенаправляется на родное приложение Facebook для Android

Я использую последнюю версию SDK Facebook в своем приложении для входа в систему. Вход в систему работает хорошо, когда на моем устройстве не установлено собственное приложение facebook. Но если установлено собственное приложение facebook, мой логин перенаправляется в это родное приложение facebook.

Но я хочу, чтобы мое приложение использовало только диалог facebook для входа в систему. Как я могу ограничить свое приложение для использования только диалогового окна SDK Facebook для входа в систему?

Ниже мой пример кода для входа

код:

Session.openActiveSession(MainActivity.this, true, new Session.StatusCallback() {

              // callback when session changes state



            @Override
              public void call(Session session, SessionState state, Exception exception) {

                Log.e("session","open session");

                if (session.isOpened()) {

                    strAccesstoken=session.getAccessToken();
                     List<String> permissions = session.getPermissions();

                     Log.e("current permissions",""+permissions);
                        if (!isSubsetOf(PERMISSIONS, permissions)) {

                            Session.NewPermissionsRequest newPermissionsRequest = new Session
                                    .NewPermissionsRequest(MainActivity.this, PERMISSIONS);
                        session.requestNewPublishPermissions(newPermissionsRequest);
                            return;
                        }

                  // make request to the /me API
                  Request.executeMeRequestAsync(session, new Request.GraphUserCallback() {



                    // callback after Graph API response with user object


                    @Override
                    public void onCompleted(GraphUser user, Response response) {
                        // TODO Auto-generated method stub


                        if (user != null) {
                            welcome = (TextView) findViewById(R.id.welcome);
                            welcome.setText("Hello " + user.getName() + "!");
                            strCurrentuser=user.getId();


                          }

                         // Check for publish permissions    


                    }
                  });
                }
              }
            });

person veerendra    schedule 15.04.2014    source источник


Ответы (2)


Использовать этот:

Session.OpenRequest request=new Session.OpenRequest(activity);

request.setLoginBehavior(SessionLoginBehavior.SUPPRESS_SSO);
// suppressing single sign on will prevent the native app and use web based login.

Session session= new Session(activity);
session.openForRead(request);
session.setCallback(callback);
Session.setActiveSession(session);
person Community    schedule 15.04.2014
comment
да. это даст вам экземпляр сеанса. Затем вы можете использовать его для любого другого запроса. - person ; 15.04.2014
comment
что это за обратный вызов? как я могу получить это. - person veerendra; 15.04.2014
comment
session.setCallback(new StatusCallback(){ @Override public void call(Session Session, SessionState state, ExceptionException) { // TODO Auto-generated method } }); - person veerendra; 15.04.2014
comment
session.setCallback(обратный вызов) отсутствует в сеансе (неопределенный метод в сеансе) - person veerendra; 15.04.2014
comment
session.setCallback(обратный вызов). вместо обратного вызова используйте new StatusCallback(){ // ваш код} - person ; 15.04.2014
comment
@Override public void onActivityResult (int requestCode, int resultCode, Intent data) { super.onActivityResult (requestCode, resultCode, data); Session.getActiveSession().onActivityResult(активность, код запроса, код результата, данные); } - person ; 15.04.2014
comment
все сделано, но не работает, я могу отобразить диалог входа, но после этого ничего не происходит - person veerendra; 15.04.2014
comment
Вы переопределили OnActivityResult - person ; 15.04.2014

Также не забудьте переопределить onActivityResult

@Override

        public void onActivityResult(int requestCode, int resultCode, Intent data)
        {

                super.onActivityResult(requestCode, resultCode, data);

                Session.getActiveSession().onActivityResult(activity, requestCode, resultCode, data);

            }
person Community    schedule 15.04.2014