JSONObject上的nullpointer异常graphResponse = response.getGraphObject()。getInnerJSONObject();

时间:2014-01-09 06:54:15

标签: android facebook

我必须分享来自共享偏好的facebook的链接,同时这样做我在JSONObject上得到nullpointer异常graphResponse = response.getGraphObject()。getInnerJSONObject();在oncompleted部分,我可以登录到Facebook但经过身份验证后出错,请帮助我找不到原因.. 我有这个代码..     //..facebook sharing

public static final List<String> PERMISSIONS = Arrays.asList("publish_actions");
    public static final String PENDING_PUBLISH_KEY = "pendingPublishReauthorization";
    public boolean pendingPublishReauthorization = false;
    private Session.StatusCallback statusCallback = new SessionStatusCallback();

分享功能是:

public void ShareOnFacebook(String sharingpath)
    {
        Session currentSession = Session.getActiveSession();
        if (currentSession == null || currentSession.getState().isClosed()) {
            Session session = new Session.Builder(getBaseContext()).build();
            Session.setActiveSession(session);
            currentSession = session;
        }

        else if (!currentSession.isOpened()) {
            // Ask for username and password
            OpenRequest op = new Session.OpenRequest(this);

            op.setLoginBehavior(SessionLoginBehavior.SUPPRESS_SSO);
            op.setCallback(statusCallback);

            List<String> permissions = new ArrayList<String>();
            permissions.add("publish_stream");
            op.setPermissions(permissions);

            Session session = new Session(this);
            Session.setActiveSession(session);
            Log.d("session", "opening sesion for publish action!!");
            session.openForPublish(op);
        }
        }

sessionstatuscallback函数是:

private class SessionStatusCallback implements Session.StatusCallback
    {
        @Override
        public void call(final Session session, SessionState state, Exception exception)
        {
            //we have callback here

            if (session.isOpened())
            {
                Log.d("session", "session is already opened ,we are in the callback section...going to publish link!!");
                PublishLink();
        }
    } 
    }

我的publishlink功能是:

public void PublishLink()
 {

    SharedPreferences prefs = getSharedPreferences("shared",MODE_PRIVATE); 
    String path = prefs.getString("path", "");

    Session session = Session.getActiveSession();

            // Check for publish permissions   

            List<String> permissions = session.getPermissions();
            if (!isSubsetOf(PERMISSIONS, permissions)) {
                pendingPublishReauthorization = true;
                Session.NewPermissionsRequest newPermissionsRequest = new Session
                        .NewPermissionsRequest(this,PERMISSIONS);
            session.requestNewPublishPermissions(newPermissionsRequest);

            }

            Bundle postParams = new Bundle();
            postParams.putString("link", path);
            Request.Callback callback= new Request.Callback() {

                public void onCompleted(Response response) {
                    Log.d("graphresponse", response.toString());
                     JSONObject graphResponse =         response.getGraphObject().getInnerJSONObject();
                    String postId = null;
                    try {
                        postId = graphResponse.getString("id");
                    } catch (JSONException e) {
                        Log.d(
                            "JSON error "+ e.getMessage(), postId);
                    }

                    FacebookRequestError error = response.getError();
                    if (error != null) {
                        Toast.makeText(
                             getApplicationContext(),
                             error.getErrorMessage(),
                             Toast.LENGTH_SHORT).show();
                        } else {
                            Toast.makeText(
                                 getApplicationContext(), 
                                 postId,
                                 Toast.LENGTH_LONG).show();
                    }
                }
            };


            Request request = new Request(session, "me/feed", postParams, HttpMethod.POST, callback);

            RequestAsyncTask task = new RequestAsyncTask(request);
            task.execute();


 }
public boolean isSubsetOf(Collection<String> subset, Collection<String> superset) {
    for (String string : subset) {
        if (!superset.contains(string)) {
            return false;
        }
    }
    return true;
}

log.d中的response.tostring()给出了graphobject为null 我想检查用户是否已经登录到Facebook如果用户已经登录我想分享链接,如果没有让他们登录并分享链接... 我尝试了很多但没有运气......

0 个答案:

没有答案