BlackBerry - Facebook расширенные разрешения - PullRequest
2 голосов
/ 31 марта 2010

Я только что нашел отличный образец Facebook Connect на Blackberry от Eki Y. Baskoro,

Ниже приводится краткое руководство по использованию Facebook Connect на Blackberry. Я создал простой Facade, инкапсулирующий API REST Facebook, а также добавил «грубый» подход MVC для навигации по экрану. Я тестировал на JDE 4.5 с использованием симулятора 8320. Эта работа еще не завершена, и вся работа под лицензией.

Отлично подходит для чтения.

NB Не забудьте получить ключ приложения Facebook и установить его в классе TestBB.

Но теперь я хочу опубликовать что-нибудь на моей стене. Поэтому я добавил новый метод в класс FacebookFacade, используя Stream.publish API :

 /***
 * Publishes message to the stream.
 * @param message - message that will appear on the facebook stream
 * @param targetId - The ID of the user, Page, group, or event where 
 *     you are publishing the content.
 */
public void streamPublish(String message, String targetId)
{
    Hashtable arguments = new Hashtable();
    arguments.put("method", "stream.publish");
    arguments.put("message", message);
    arguments.put("target_id", targetId);
    try {
        JSONObject result = new JSONObject(
        int new JSONTokener(sendRequest(arguments)));            
        int errorCode = result.getInt("error_code");
        if (errorCode != 0) System.out.println("Error Code: "+errorCode);
    } catch (Exception e) {
        System.out.println(e);
    }
}

 /***
 * Publishes message on current user wall.
 * @param message - message that will appear on the facebook stream
 */
public void postOnTheWall(String message)
{
    String targetId = String.valueOf(getLoggedInUserId()); 
    streamPublish(message, targetId);
}

Это вернет код ошибки 200: «Пользователь не авторизовал приложение для выполнения этого действия»

Сначала я подумал, что это связано с Facebook -> Настройки приложения -> Дополнительные разрешения -> Опубликовать недавние действия (однострочные) на моей стене , но даже проверил, без разницы ...

Тогда я нашел это сообщение , объясняющее эту проблему, связанную с расширенными разрешениями .

Это, в свою очередь, должно быть исправлено путем небольшого изменения URL в классе LoginScreen :

public LoginScreen(FacebookFacade facebookFacade) {
    this.facebookFacade = facebookFacade;

    StringBuffer data = new StringBuffer();
    data.append("api_key=" + facebookFacade.getApplicationKey());
    data.append("&connect_display=popup");
    data.append("&v=1.0");
    //revomed
    //data.append("&next=http://www.facebook.com/connect/login_success.html");
    //added     
    data.append("&next=http://www.facebook.com/connect/prompt_permissions.php?" +
    "api_key="+facebookFacade.getApplicationKey()+"&display=popup&v=1.0"+
    "&next=http://www.facebook.com/connect/login_success.html?"+
    "xxRESULTTOKENxx&fbconnect=true" +
    "&ext_perm=read_stream,publish_stream,offline_access");     
data.append("&cancel_url=http://www.facebook.com/connect/login_failure.html");
    data.append("&fbconnect=true");
    data.append("&return_session=true");
    (new FetchThread("http://m.facebook.com/login.php?" 
            + data.toString())).start();
}

К сожалению, это не работает. Код ошибки 200 в ответ на запрос stream.publish ...

У вас есть предложения, как решить эту проблему?

Спасибо!

1 Ответ

2 голосов
/ 04 апреля 2010

Я разместил обновленный API на своем веб-сайте (http://www.baskoro.web.id/facebook-connect-blackberry-HOWTO.html), и это должно решить эту проблему. Пожалуйста, дайте мне знать иначе.

Сала. Ура! * * 1005

Eki

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