【问题标题】:social auth in android nullpointerexception while signout from facebook从facebook注销时android nullpointerexception中的社交身份验证
【发布时间】:2014-06-27 01:29:21
【问题描述】:

我正在使用社交身份验证库在 Android 应用中与社交媒体共享和登录。

我已成功登录并使用 facebook 授权。 但是当我尝试注销时应用程序因空指针异常而崩溃

adapter.signOut(getActivity(), Provider.FACEBOOK.toString());

出现以下错误:

05-09 10:24:23.010: E/AndroidRuntime(19998): java.lang.NullPointerException
05-09 10:24:23.010: E/AndroidRuntime(19998): at org.brickred.socialauth.android.SocialAuthAdapter.signOut(SocialAuthAdapter.java:797)

我正在使用最新版本。 socialauth-4.4.jar 和 socialauth-android-3.2.jar

【问题讨论】:

  • 可能你的适配器是空的。
  • @Mihir Shah,你能在哪里解决这个问题?
  • @Deacoy 不。仍然得到空指针异常。有什么想法吗?
  • 在我的情况下,我对适配器的引用有误,我知道在我的 Application 类中保留对当前正在使用的适配器的静态引用。是否可以使用其他适配器实例登录并使用另一个实例进行 signOut() ?那是我的问题..

标签: android nullpointerexception social-networking socialauth


【解决方案1】:

请确保从活动中调用。从这样的活动调用方法后,片段中的 Getactivity() 不起作用 adapter.signOut(this, Provider.FACEBOOK);

【讨论】:

    【解决方案2】:

    我遇到了类似的问题,这个解决方案对我有用: https://code.google.com/p/socialauth-android/issues/detail?id=108#c16

    基本上注销功能有个bug,必须先登录再注销,否则可能会出现NPE。上面的解决方案是在必要时创建一个新的 SocialAuthManager。

    我建议将该源代码作为 java 模块导入,而不是使用 jar 文件,这样您就可以自己修复一些问题,例如更改对话框标题文本等...

    【讨论】:

      【解决方案3】:
      In signOut function put these lines,
      
      if (providerName != null) {
                  if (socialAuthManager == null) {
                      socialAuthManager = new SocialAuthManager();
                      try {
                          loadConfig(ctx);
                      } catch (Exception e) {
                          Log.d(" SocialAuthAdapter ", "Could not load configuration");
                      }
                  }
      
      before 
      
      if (socialAuthManager.getConnectedProvidersIds().contains(providerName)) socialAuthManager.disconnectProvider(providerName);
      

      【讨论】:

        【解决方案4】:

        这已经解决了我现在的问题,如果应用程序范围的适配器为空,则在您要退出的类中实例化一个新适配器

        //My Activity
            protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_profile);
        
            //Get the currently available adapter
            myApp = (MyApplication) getApplication();
            adapter = myApp.getSocialAuthAdapter();
        
            //Adapter initialization if null
            if (adapter==null){
                adapter = new SocialAuthAdapter(new ResponseListener());
            }
        }
        
        //ResponseListener Class
            public final class ResponseListener implements DialogListener {
        
            @Override
            public void onComplete(Bundle values) {
        
                String providerName = values.getString(SocialAuthAdapter.PROVIDER);
        
                // Set a application wide reference to the social adapter here
                myApp = (MyApplication) getApplication();
                myApp.setSocialAuthAdapter(adapter);                         
            }
        
            @Override
            public void onError(SocialAuthError error) {
                Log.d("Custom-UI", "Error");
                error.printStackTrace();
            }
        
            @Override
            public void onCancel() {
                Log.d("Custom-UI", "Cancelled");
            }
        
            @Override
            public void onBack() {
                Log.d("Custom-UI", "Dialog Closed by pressing Back Key");
        
            }
        }
        
        
        //Code for application class
        
        public class MyApplication extends Application {
        
        // SocialAuth Component
        private SocialAuthAdapter socialAuthAdpater;
        
        public SocialAuthAdapter getSocialAuthAdapter() {
                return socialAuthAdpater;
        }
        
        public void setSocialAuthAdapter(SocialAuthAdapter socialAuthAdapter) {
                this.socialAuthAdpater = socialAuthAdapter;
        }
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2017-07-30
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多