Получение NPE с использованием модуля fbconnect в Play Framework - PullRequest
1 голос
/ 03 февраля 2011

При попытке использовать модуль Play FBConnect я получаю следующее исключение NullPointerException:

Caused by: java.lang.NullPointerException
        at tags.fbconnect.FBConnectTags._button(FBConnectTags.java:26)
        at tags.fbconnect.FBConnectTags$_button.call(Unknown Source)
        at /app/views/main.html.(line:17)
        at play.templates.GroovyTemplate.render(GroovyTemplate.java:203)

Кажется, что это строка, где это происходит: https://github.com/rbamba/play-fbconnect/blob/master/app/tags/fbconnect/FBConnectTags.java#L26

К сожалению, я 'Я недостаточно знаком с модулями Play, чтобы отлаживать это сам.

edit: В ответ на комментарий я считаю, что модуль fbconnect правильно настроен, так как об этом ранее сообщалось в журнале.:

13:12:13,225 INFO  ~ Module fbconnect is available (/home/****/play-1.1.1/modules/fbconnect-0.3)

edit2: На самом деле у меня есть возможность продвигаться дальше этого уровня на моей локальной машине, но все еще получаю этот NPE на моем производственном сервере.

Ответы [ 2 ]

0 голосов
/ 03 февраля 2011

Я говорил с Реджисом Бамба, одним из программистов, который работает с fb-connect.

В конце концов я решил использовать модуль fbgraph, и, вероятно, рекомендую это всем, кто задумывается об использовании fb-подключиться, потому что он более мощный и, кажется, лучше поддерживается.Даже Регис рекомендовал использовать его: -)

Независимо от того, что Регис предложил избавиться от «java.net.URISyntaxException»:

Решение состоит в том, чтобы вручную заменить его на закодированныйзначение перед кодированием всей строки.

Функция getAuthUrl () в FBConnectSession.java должна быть:

public String getAuthUrl(String authCode){
  return "https://graph.facebook.com/oauth/access_token?client_id=" +
     WS.encode(id)+"&redirect_uri=" +
     WS.encode(Router.getFullUrl("FBConnect.callback")) +  
     "&client_secret="+WS.encode(secret)+"&code="+WS.encode(authCode.replace("|","%7C"));
}
0 голосов
/ 03 февраля 2011

Я не вижу ничего особенного в коде плагина.Чтобы объяснить немного, что происходит,

// the line of code with the error
String url = Play.plugin(FBConnectPlugin.class).session().getLoginUrl(scope);

Давайте немного разберем это

Play.plugin(FBConnectPlugin.class)

Эта строка просит Play вернуть инициализированный плагин из списка настроенных плагиновв игре.Если плагин не настроен, он возвращает ноль.Это наиболее вероятная причина ошибки.

.session()

Это просто получает объект сеанса от FBConnectPlugin, который является статически созданным объектом, поэтому не будет нулевым.

.getLoginUrl(scope);

Это создает URL вверх.Этот метод не вызывается, в противном случае вы увидите его в трассировке стека.

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

Ответ немного скучный, но, как вы сказали, вы не понимаете, как работают модули, я подумал, что это стоит объяснить.

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