尝试使用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模块不够熟悉,无法自己调试。

编辑:作为回应,我相信fbconnect模块已正确配置,因为这是在日志中较早地报告的:

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


edit2:实际上,我已经在本地计算机上完成了这一步,但是仍然在生产服务器上获得了该NPE。

最佳答案

我看不到插件代码有什么特别错误的地方。为了解释一些正在发生的事情,

// 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获取会话对象,该对象是静态创建的对象,因此不会为null。

.getLoginUrl(scope);


这将建立URL。不会调用此方法,否则您会在堆栈跟踪中看到它。

因此,问题是您没有正确配置插件。再次检查文档以确保其有问题。或者,您可能想签出FbGraph模块。我几天前安装了这个程序,并且已经安装并运行了一个Facebook应用程序。这非常简单,并且文档非常出色。

答案有些long昧,但是正如您所说的,您不了解模块的工作原理,我认为值得解释。

关于java - 在Play Framework中使用fbconnect模块获取NPE,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/4879977/

10-10 16:41