在Android中使用Facebook SDK 3.0在墙上发布状态

时间:2013-06-08 02:08:57

标签: android facebook

我正在尝试使用Android SDK中的Facebook SDK 3.0在我的墙上发布状态更新。登录会话是完美的,除了发布部分,一切正常。

获得写入墙的许可后。不张贴到墙上。当我检查活动会话部分时。我在日志中获得open_token_updated而不是“OPENED” - 在给予写入权限之前 - 日志显示“已打开”......

如果我关闭应用程序并再次加载应用程序,我可以看到“打开”,我可以发布到墙上。

以下是我的尝试:

check.setOnClickListener(new OnClickListener()
    {

        @Override
        public void onClick(View v)
        {
            boolean login = false;
            if (Session.getActiveSession() != null)
            {
                login = true;
            }

            Log.e ("Session Active?", "" + Session.getActiveSession().getState());

        }

    });

            //POST WALL BUTTON
    post.setOnClickListener(new OnClickListener()
    {

        @Override
        public void onClick(View v)
        {
           if(Session.getActiveSession() != null)
 {
                     if(Session.getActiveSession().getState()==SessionState.OPENED)
                    publishStory();
            }
        }
    });

这是发布方法

Session session = Session.getActiveSession();

    if (session != null)
    {

        // Check for publish permissions
        List<String> permissions = session.getPermissions();
        if (!isSubsetOf(PERMISSIONS, permissions))
        {
            Session.NewPermissionsRequest newPermissionsRequest = new Session.NewPermissionsRequest(this, PERMISSIONS);
            session.requestNewPublishPermissions(newPermissionsRequest);
            //return;
        }

        Log.e("after", "permissions");

        Bundle postParams = new Bundle();
        postParams.putString("name", "Sample Test from my app");
        postParams.putString("caption", "The best");
        postParams.putString("description","Testing how it works.");
        postParams.putString("link", "http://www.google.com/");
        postParams.putString("picture", "http://www.etftrends.com/wp-content/uploads/2012/07/blue_wave_of_water-wide.jpg");

        Request.Callback callback = new Request.Callback()
        {
            public void onCompleted(Response response)
            {
                Log.e("post response",response.toString());

                FacebookRequestError error = response.getError();
                if (error != null)
                {
                    Log.e ("No", "Not null");

                }
                else
                {
                    Log.e ("No", "null");

                    JSONObject graphResponse = response.getGraphObject().getInnerJSONObject();
                    String postId = null;
                    try
                    {
                        postId = graphResponse.getString("id");
                        Toast.makeText(Sessionvalid.this, postId, Toast.LENGTH_LONG).show();
                    }
                    catch (JSONException e)
                    {
                        Log.i("JSON", "JSON error " + e.getMessage());
                    }

                }


            }
        };

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

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

SubSetMethod

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

OnActivityResult

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    super.onActivityResult(requestCode, resultCode, data);
    Session.getActiveSession().onActivityResult(this, requestCode, resultCode, data);
}

我在这里做错了..不知道在哪里以及如何解决这个问题?

0 个答案:

没有答案