BlackBerry принудительно прервать подключение Facebook - PullRequest
1 голос
/ 09 августа 2011

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

public class FacebookIntegration {

    private static User user;
    private static String NEXT_URL = "http://www.facebook.com/connect/login_success.html";
    private static String APPLICATION_ID ;
    private static String APPLICATION_SECRET ;
    private static String[] PERMISSIONS = Facebook.Permissions.USER_DATA_PERMISSIONS;
    public static boolean posted = false;
    private static String[] postPermissions = Facebook.Permissions.PUBLISHING_PERMISSIONS;
    private static SharePopup _obj;
    private static boolean exception = false;

    public static boolean integrate(SharePopup obj) {

        _obj = obj;
        ApplicationSettings as = new ApplicationSettings(NEXT_URL, APPLICATION_ID, APPLICATION_SECRET, PERMISSIONS);
        ApplicationSettings as2 = new ApplicationSettings(null, APPLICATION_ID, APPLICATION_SECRET, PERMISSIONS);

        Facebook fb = Facebook.getInstance(as);

         _obj.close();
        try {
            user = fb.getCurrentUser();
        } catch (FacebookException e1) {

            e1.printStackTrace();
            exception = true;
        }
        if (!exception) {
            try {

                fb.getCurrentUser(new BasicAsyncCallback() {
                    public void onComplete(com.blackberry.facebook.inf.Object[] objects, final java.lang.Object state) {
                        FacebookIntegration.this.user = (User) objects[0];
                        Vector prayerTimes = (Vector) PrayerTimesDTO.getPrayerTimes();
                        StringBuffer post = new StringBuffer("avbc");

                        user.publishStatus(post.toString());

                        posted = true;

                        user.publishPost("stream.publish", "published through the Facebook API", APPLICATION_SECRET, null, null, null, user.getId());

                    }

                    public void onException(final Exception e, final java.lang.Object state) {
                        e.printStackTrace();

                    }
                });

            } catch (FacebookException e) {
                e.printStackTrace();
            } finally {
                fb.logout(true);


            }
        }
        return true;

    }


}

Ответы [ 2 ]

0 голосов
/ 21 августа 2011

A. В вашем классе MainScreen переопределите функцию onClose:

public boolean onClose() {
     FacebookIntegration.closeConnection(); 
     return super.onClose();
}



B. Изменить FacebookIntegration следующим образом:

  1. Поместить объект Facebook в качестве статического поля в классе

    private static Facebook fb;

  2. Изменить строку: Facebook fb = Facebook.getInstance(as);
    быть fb = Facebook.getInstance(as);

  3. Добавьте метод closeConnection к FacebookIntegration следующим образом:

    public static void closeConnection() { fb.logout(true); }

0 голосов
/ 20 августа 2011

Я размышлял над этим с тех пор, как вы впервые его опубликовали.Я не думаю, что кто-то может вам помочь, потому что мы должны знать, что делает объект Facebook.Вероятно, именно здесь вам придется закрыть соединение.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...