2011-02-02 44 views
1

我得到以下NullPointerException異常,而試圖使用播放FBConnect模塊的NPE:獲取使用fbconnect模塊中播放框架

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

我和Regis Bamba交談過,他是fb-connect工作的程序員之一。

我最終決定使用fbgraph模塊,我可能會推薦給任何想使用fb-connect的人,因爲它更強大,並且似乎更好地維護。即使雷吉斯建議使用它:-)

無論如何,這裏是紅塔建議擺脫「java.net.URISyntaxException」的:

的解決方案是其編碼值手動替換它,在編碼之前整個字符串。

FBConnectSession中的getAuthUrl()函數。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) 

該行要求播放返回初始化的插件,從戲中配置的插件列表。如果插件沒有設置,那麼它返回null。這是錯誤最可能的原因。

.session() 

這只是從靜態創建的對象FBConnectPlugin獲取會話對象,因此不會爲空。

.getLoginUrl(scope); 

這建立了URL。這個方法沒有被調用,否則你會在堆棧跟蹤中看到它。

因此,問題是您沒有正確配置插件。再次檢查文檔以確定它有什麼問題。或者,您可能想查看FbGraph模塊。我幾天前安裝了這個軟件,並且已經啓動並運行了Facebook應用程序。這非常簡單,而且文檔非常好。

答案有點囉嗦,但正如你所說,你不明白模塊是如何工作的,我認爲這是值得解釋的。

+0

感謝您的反饋。我只是在問題中增加了一些內容,指出日誌報告模塊可用。 FBGraph是FBConnect的替代品嗎? – sanity 2011-02-02 21:53:12