2014-07-09 2 views
1

Я использую следующий образец проекта (который им пытаются изменить): https://github.com/fbsamples/android-3.0-howtos/tree/master/PublishFeedHowToAndroid Facebook SDK - программно войти в систему пользователя

Там есть отдельный LoginButton и Share Button в проекте. LoginButton - это виджет из SDK для Facebook. Я хочу иметь одну кнопку, которая будет регистрировать пользователя, если он еще не войдет в систему, а затем автоматически выполнить действие share. Мне не удалось открыть сеанс программно. Какой код я должен писать, чтобы иметь возможность вводить пользователя в систему из моей пользовательской кнопки или через код?

Код ниже является частью примера проекта, вся логика сеанса инкапсулируется внутри виджета LoginButton. Мне нужно выполнить одно и то же действие с помощью моей кнопки/кода.

LoginButton authButton = (LoginButton) view.findViewById(R.id.authButton); 
    authButton.setFragment(this); 

Хотя я нашел другие темы по этой теме, я не смог найти ответа. Я не хочу использовать сторонние библиотеки, я хотел бы знать, могу ли я добиться этого с помощью официального Facebook SDK для Android.

ответ

0

Вы можете сделать что-то вроде этого:

 findViewById(R.id.btn_login_with_facebook).setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      showProgressDialog(); 
      Session.OpenRequest openRequest = new Session.OpenRequest(LoginActivity.this); 
      openRequest.setCallback(new Session.StatusCallback() { 
       @Override 
       public void call(Session session, SessionState state, Exception exception) { 
        if (state == SessionState.OPENED) { 
         Request.executeMeRequestAsync(session, 
           new FacebookLoginGraphUserCallback(restManager.getUserAdapter())); 
        } else if ((state != SessionState.OPENING) && (!session.isOpened())) { 
         hideProgressDialog(); 
        } 
       } 
      }); 
      Session.openActiveSession(LoginActivity.this, true, openRequest); 
     } 
    }); 

Это код из одного устаревших проекта я не уверен, что он полностью функционален с последним facebook-SDK, но это должно дать вам основную идею. Но делать такие вещи означает, что вам придется выполнять всю работу, связанную с сеансом, самостоятельно.

Если я правильно понял, мне кажется, что лучшим решением является установка обратного вызова статуса сеанса для встроенной кнопки входа в facebook. В этом случае вы сможете делать все, что захотите, после того как пользователь выполнит вход.

1

Проще, хотя хакерское решение состоит в том, чтобы добавить кнопку входа в систему и установить видимость. Затем вы можете просто вызвать функцию executeClick() в LoginButton, и начнется рабочий процесс входа в систему.

 Смежные вопросы

  • Нет связанных вопросов^_^