2011-02-02 2 views
1

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

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 для самостоятельной отладки.

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

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

edit2: Я на самом деле получил его чтобы проделать этот этап на моей локальной машине, но все равно получая этот NPE на моем рабочем сервере.

ответ

0

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

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

Независимо от того, вот что Regis предложил избавиться от «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

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

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

Давайте сломаем это вниз немного

Play.plugin(FBConnectPlugin.class) 

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

.session() 

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

.getLoginUrl(scope); 

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

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

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

+0

Благодарим за отзыв. Я только что добавил к вопросу, указав, что журналы сообщают, что модуль доступен. Является ли FBGraph заменой FBConnect? – sanity

+0

Используете ли вы какие-либо другие плагины? Возможно, другие плагины противоречат этому плагину. Просто потому, что модуль установлен (который вы знаете из-за вашего вывода, а также тот факт, что вы используете тег FbConnect). – Codemwnci

+0

Да, FbGraph - альтернатива. не уверены в точных различиях, но посмотрите на документацию, чтобы узнать больше. Это хорошо работает для меня – Codemwnci

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