4

我正在尝试使用以下插件为 Phonegap 实现 facebook API 插件... https://github.com/phonegap/phonegap-facebook-plugin/issues/183

我按照安装指南操作,我使用的是 Phonegap 2.9.0。为了进行测试,我使用了项目中提供的示例(hackbook 和简单的示例)。该应用程序在 Android Jelly Bean 4.2.2 中运行

但是,每当我尝试使用 facebook 示例登录时,在应用身份验证上点击 OK 后,android 应用就会意外停止。

有什么建议我应该在哪里检查?

这是 LogCat 错误:

    07-21 12:25:10.568: W/dalvikvm(4288): threadid=1: thread exiting with uncaught exception (group=0x40e32930)
07-21 12:25:10.568: E/AndroidRuntime(4288): FATAL EXCEPTION: main
07-21 12:25:10.568: E/AndroidRuntime(4288): java.lang.NullPointerException
07-21 12:25:10.568: E/AndroidRuntime(4288):     at org.apache.cordova.facebook.ConnectPlugin$AuthorizeListener.onComplete(ConnectPlugin.java:283)
07-21 12:25:10.568: E/AndroidRuntime(4288):     at com.facebook.android.Facebook.onSessionCallback(Facebook.java:345)
07-21 12:25:10.568: E/AndroidRuntime(4288):     at com.facebook.android.Facebook.access$11(Facebook.java:326)
07-21 12:25:10.568: E/AndroidRuntime(4288):     at com.facebook.android.Facebook$1.call(Facebook.java:304)
07-21 12:25:10.568: E/AndroidRuntime(4288):     at com.facebook.Session$3$1.run(Session.java:1190)
07-21 12:25:10.568: E/AndroidRuntime(4288):     at android.os.Handler.handleCallback(Handler.java:725)
07-21 12:25:10.568: E/AndroidRuntime(4288):     at android.os.Handler.dispatchMessage(Handler.java:92)
07-21 12:25:10.568: E/AndroidRuntime(4288):     at android.os.Looper.loop(Looper.java:137)
07-21 12:25:10.568: E/AndroidRuntime(4288):     at android.app.ActivityThread.main(ActivityThread.java:5227)
07-21 12:25:10.568: E/AndroidRuntime(4288):     at java.lang.reflect.Method.invokeNative(Native Method)
07-21 12:25:10.568: E/AndroidRuntime(4288):     at java.lang.reflect.Method.invoke(Method.java:511)
07-21 12:25:10.568: E/AndroidRuntime(4288):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:795)
07-21 12:25:10.568: E/AndroidRuntime(4288):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:562)
07-21 12:25:10.568: E/AndroidRuntime(4288):     at dalvik.system.NativeStart.main(Native Method)
07-21 12:25:19.787: I/Process(4288): Sending signal. PID: 4288 SIG: 9
4

2 回答 2

2

在 ConnectPlugin.java 中,替换:

try {
    JSONObject o = new JSONObject(this.fba.facebook.request("/me"));
    this.fba.userId = o.getString("id");
    this.fba.success(getResponse(), this.fba.callbackId);
} catch (MalformedURLException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
} catch (IOException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
} catch (JSONException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
}

使用以下代码:

Thread t = new Thread(new Runnable() {
    public void run() {
        try {
            JSONObject o = new JSONObject(fba.facebook.request("/me"));
            fba.userId = o.getString("id");
            fba.success(getResponse(), fba.callbackId);
        } catch (MalformedURLException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (JSONException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }
});
t.start();

参考:使用 Phonegap 1.6.0 登录 Facebook 上的 NetworkOnMainThreadException

于 2013-07-25T11:46:10.497 回答
2

补充到@ umesh25,如果使用cordova 2.9,这已经打了补丁,只需评论导致NullPointerException

277. Log.d(TAG, values.toString());
于 2013-08-02T13:20:52.517 回答