2014-12-04 108 views
1

我有一个Facebook登录按钮和一个分享按钮来更新我的状态,我可以正确登录,但当我尝试在我的墙上分享一些文本作为facebook状态我的应用程序崩溃与nullpointerexception这里是我的状态更新代码:如何发布Facebook的状态直接在墙上使用Facebook的SDK在Android?

分享按钮点击收听:

Session session = Session.getActiveSession(); 

     Session.NewPermissionsRequest newPermissionsRequest = new Session.NewPermissionsRequest(
       this, Arrays.asList("publish_actions")); 
     session.requestNewPublishPermissions(newPermissionsRequest); 

和我SessionState的变化方法是这样的:

private void onSessionStateChange(Session session, SessionState state, 
      Exception exception) { 
     if (state.isOpened()) { 
      Log.i(TAG, "Logged in..."); 


      bShare.setEnabled(true); 

      if (state.equals(SessionState.OPENED_TOKEN_UPDATED) 
        && shouldAskPermission) { 
       shouldAskPermission = false; 
       Log.i(TAG, "opened token updated"); 


       Request.Callback UploadCallback = new Request.Callback() { 

        @Override 
        public void onCompleted(Response response) { 
         if (response.getError() != null) { 

          Toast.makeText(getActivity(), "Error Occured", 
            Toast.LENGTH_LONG).show(); 

         } 

         Object graphResponse = response.getGraphObject() 
           .getProperty("id"); 
         if (graphResponse == null 
           || !(graphResponse instanceof String) 
           || TextUtils.isEmpty((String) graphResponse)) { 

          Toast.makeText(getActivity(), 
            "Failed to post Status", Toast.LENGTH_LONG) 
            .show(); 
         } else { 

          Toast.makeText(getActivity(), "Status Updated", 
            Toast.LENGTH_LONG).show(); 
         } 

        } 
       }; 

       Request request = Request 
         .newStatusUpdateRequest(
           session, 
           StatusDetails.et.getText().toString() 
             .contentEquals("") ? "status from status plus" 
             : StatusDetails.et.getText().toString(), 
           UploadCallback); 

       request.executeAsync(); 

      } 

     } else if (state.isClosed()) { 
      Log.i(TAG, "Logged out..."); 
      // bShare.setVisibility(View.INVISIBLE); 
      bShare.setEnabled(false); 

     } 

    } 

但我的状态得到更新,当我尝试使用我的开发人员的Facebook p设定档,如果我尝试使用后的一些其他Facebook的个人主页它给了我在该行空指针异常:

Object graphResponse = response.getGraphObject() 
           .getProperty("id"); 

我已经发表在开发者控制台应用程序公开,但我不明白现在做什么?任何人都可以帮忙吗?

回答

1

之前,你可以使用publish_actions为其他配置文件,则需要经过一个审查过程:https://developers.facebook.com/docs/apps/review/login

否则,它只会为用户在App一个角色(管理员,开发人员,测试人员)工作。

+0

好的我明白了,但是我在6个月前用相同的程序创建了一个应用程序,并且工作到现在非常好。为什么没有这个应用程序需要审查? – Reyjohn 2014-12-04 20:48:26

+0

,因为它仍然是一个v1.0应用程序。它将需要在2015年4月以后进行审核:https://developers.facebook.com/docs/apps/changelog – luschn 2014-12-04 20:53:25

相关问题