2014-03-30 80 views
1

我是一个初学者开发者,只有我的应用程序的Facebook登录,链接到Parse.com,并且有一个我无法修复的bug。每当用户完全注销Facebook时,重新登录会在onActivityResult中为ParseFacebookUtils.finishauthentication创建一个NPE。我见过很多类似的问题,但没有一个解决方案适用于我。 这里是我的代码Android NullPointerException解析Facebook登录

public void parseLogin(){ 
    ParseFacebookUtils.logIn(this, new LogInCallback() { 
      @Override 
      public void done(ParseUser user, ParseException err) { 
      if (user == null) { 
      Log.d("SignIn", "Uh oh. The user cancelled the Facebook login."); 
      } else if (user.isNew()) { 
       Log.d("SignIn", "User signed up and logged in through Facebook!"); 
      } else { 
       Log.d("SignIn", "User logged in through Facebook!"); 
      } 
      } 
     }); 
    toStart(); 
} 

@Override 
public void onActivityResult(int requestCode, int resultCode, Intent data) { 
    super.onActivityResult(requestCode, resultCode, data); 

    ParseFacebookUtils.finishAuthentication(requestCode, resultCode, data); 
} 

我用尽了一切我能想到的,而且仍然无法回避的NPE。任何新的解决方案将不胜感激!

编辑这里的logcat的

03-31 16:23:39.938: E/AndroidRuntime(18322): FATAL EXCEPTION: main 
03-31 16:23:39.938: E/AndroidRuntime(18322): java.lang.RuntimeException: Failure    delivering result ResultInfo{who=null, request=64206, result=-1, data=Intent { (has extras) }} to activity {com.adit02/com.adit02.SignIn}: java.lang.NullPointerException 
03-31 16:23:39.938: E/AndroidRuntime(18322): at android.app.ActivityThread.deliverResults(ActivityThread.java:2996) 
03-31 16:23:39.938: E/AndroidRuntime(18322): at android.app.ActivityThread.handleSendResult(ActivityThread.java:3039) 
03-31 16:23:39.938: E/AndroidRuntime(18322): at android.app.ActivityThread.access$1100(ActivityThread.java:124) 
03-31 16:23:39.938: E/AndroidRuntime(18322): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1178) 
03-31 16:23:39.938: E/AndroidRuntime(18322): at android.os.Handler.dispatchMessage(Handler.java:99) 
03-31 16:23:39.938: E/AndroidRuntime(18322): at android.os.Looper.loop(Looper.java:137) 
03-31 16:23:39.938: E/AndroidRuntime(18322): at android.app.ActivityThread.main(ActivityThread.java:4440) 
03-31 16:23:39.938: E/AndroidRuntime(18322): at java.lang.reflect.Method.invokeNative(Native Method) 
03-31 16:23:39.938: E/AndroidRuntime(18322): at java.lang.reflect.Method.invoke(Method.java:511) 
03-31 16:23:39.938: E/AndroidRuntime(18322): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:787) 
03-31 16:23:39.938: E/AndroidRuntime(18322): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:554) 
03-31 16:23:39.938: E/AndroidRuntime(18322): at dalvik.system.NativeStart.main(Native Method) 
03-31 16:23:39.938: E/AndroidRuntime(18322): Caused by: java.lang.NullPointerException 
03-31 16:23:39.938: E/AndroidRuntime(18322): at com.parse.FacebookAuthenticationProvider.onActivityResult(FacebookAuthenticationProvider.java:171) 
03-31 16:23:39.938: E/AndroidRuntime(18322): at com.parse.ParseFacebookUtils.finishAuthentication(ParseFacebookUtils.java:379) 
03-31 16:23:39.938: E/AndroidRuntime(18322): at com.adit02.SignIn.onActivityResult(SignIn.java:103) 
03-31 16:23:39.938: E/AndroidRuntime(18322): at android.app.Activity.dispatchActivityResult(Activity.java:4649) 
03-31 16:23:39.938: E/AndroidRuntime(18322): at android.app.ActivityThread.deliverResults(ActivityThread.java:2992) 
+0

准确的NPE出现在哪条线上? –

+0

请提供logcat中的堆栈跟踪,如果没有标记为错误,则应该是Facebook堆栈跟踪的警告。也许这个bug是在Facebook SDK中。 –

+0

NPE发生在这一行ParseFacebookUtils.finishAuthentication(requestCode,resultCode,data);我将添加堆栈跟踪 – user3478960

回答

-1

我想通了。问题是我在同一时间登录Facebook并解析了Facebook,所以这两个身份验证在某些时候是相互冲突的。虽然我无法自行解析Facebook,但我只保留了facebook登录名,并将该facebook帐号与parseUser(而不是parseFacebookUtils)关联起来。这解决了问题!

+0

这不是一个解决方案。你不能让Facebook登录工作。此外,我有这个完全相同的问题,并没有解析登录在facebook登录期间进行。 –