1

Android で Facebook SDK 3.0 を使用して、ウォールにステータスの更新を投稿しようとしています。ログインセッションは完璧で、投稿部分を除いてすべて正常に機能します.

wall への書き込み許可を与えた後。ウォールに投稿しません。アクティブなセッション部分を確認すると。ログに「OPENED」ではなく open_token_updated が表示されます - 書き込み許可を与える前に - ログには「OPENED」と表示されます...

アプリケーションを閉じて再度アプリケーションをロードすると、「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);
}

私はここで何か間違ったことをしています..どこでどのように修正すればよいかわからない??

4

0 に答える 0