0

我创建了一个需要自动将状态发布到 facebook 墙上的应用程序。

我已经使用 SDK 3.0 成功启用了登录/注销会话。我正在尝试通过按一个按钮在我的墙上发布状态。

我尝试了以下方法:

Facebook 发布到供稿

我无法发布它。单击发布到墙上按钮(我已创建)后 - 几秒钟后,我得到一个带有进度条的新屏幕 - 它返回主屏幕。我的墙上没有任何更新。

更新

如果我禁用:

    if (!isSubsetOf(PERMISSIONS, permissions)) {
        pendingPublishReauthorization = true;
        Session.NewPermissionsRequest newPermissionsRequest = new Session
                .NewPermissionsRequest(this, PERMISSIONS);
    session.requestNewPublishPermissions(newPermissionsRequest);
        return;
    } 

这部分代码。我可以发消息。如果我这样做。这仅适用于我的手机而不适用于不同的手机。我该如何解决这个问题?

更新-2:

在我评论返回部分后 - 我强制关闭,但我确实获得了权限对话框。

这是错误,它指向:

JSONObject graphResponse = response.getGraphObject().getInnerJSONObject();

这是错误:06-05 12:50:43.932: E/AndroidRuntime(21933): FATAL EXCEPTION: main 06-05 12:50:43.932: E/AndroidRuntime(21933): java.lang.NullPointerException 06-05 12 :50:43.932: E/AndroidRuntime(21933): at com.test.fbtest.Sessionvalid$1.onCompleted(Sessionvalid.java:216) 06-05 12:50:43.932: E/AndroidRuntime(21933): at com.facebook .Request$4.run(Request.java:1240) 06-05 12:50:43.932: E/AndroidRuntime(21933): 在 android.os.Handler.handleCallback(Handler.java:725) 06-05 12:50: 43.932: E/AndroidRuntime(21933): 在 android.os.Handler.dispatchMessage(Handler.java:92) 06-05 12:50:43.932: E/AndroidRuntime(21933): 在 android.os.Looper.loop(Looper .java:137) 06-05 12:50:43.932: E/AndroidRuntime(21933): 在 android.app.ActivityThread.main(ActivityThread.java:5041) 06-05 12:50:43.932: E/AndroidRuntime(21933) ):在 java.lang.reflect.Method 中。invokeNative(本机方法)06-05 12:50:43.932:E/AndroidRuntime(21933):在 java.lang.reflect.Method.invoke(Method.java:511)06-05 12:50:43.932:E/AndroidRuntime (21933): 在 com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:793) 06-05 12:50:43.932: E/AndroidRuntime(21933): 在 com.android.internal.os。 ZygoteInit.main(ZygoteInit.java:560) 06-05 12:50:43.932: E/AndroidRuntime(21933): 在 dalvik.system.NativeStart.main(Native Method)E/AndroidRuntime(21933): 在 dalvik.system.NativeStart.main(Native Method)E/AndroidRuntime(21933): 在 dalvik.system.NativeStart.main(Native Method)

不太清楚为什么我会在那里出错?

4

1 回答 1

1

删除返回语句。它对我有用。

if (!isSubsetOf(PERMISSIONS, permissions)) {
        pendingPublishReauthorization = true;
        Session.NewPermissionsRequest newPermissionsRequest = new Session
                .NewPermissionsRequest(this, PERMISSIONS);
    session.requestNewPublishPermissions(newPermissionsRequest);
       'remove return statement=>' return;
    } 

工作样本,

private void publishStory()
        {


List<String> PERMISSIONS = Arrays.asList("publish_actions");
            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);
                        }

                    Bundle postParams = new Bundle();
                    postParams.putString("name", "Sample google for for Android");
                    postParams.putString("caption", "world of data");
                    postParams.putString("description","Various religios music, chants, mantras, christian songs, islamic music, quran and more.");
                    postParams.putString("link", "http://www.google.com/");
                    postParams.putString("picture", "http://www.userlogos.org/files/logos/veinedstorm/raaga.png");

                    Request.Callback callback = new Request.Callback()
                        {
                            public void onCompleted(Response response)
                                {
                                    JSONObject graphResponse = response.getGraphObject().getInnerJSONObject();
                                    String postId = null;
                                    try
                                        {
                                            postId = graphResponse.getString("id");
                                        }
                                    catch (JSONException e)
                                        {
                                            Log.i("JSON", "JSON error " + e.getMessage());
                                        }
                                    FacebookRequestError error = response.getError();
                                    Log.e("post response",response.toString());
                                    if (error != null)
                                        {
                                            Toast.makeText(checkAndPostActivity.this, error.getErrorMessage(), Toast.LENGTH_SHORT)
                                                    .show();
                                        }
                                    else
                                        {
                                            Toast.makeText(checkAndPostActivity.this, postId, Toast.LENGTH_LONG).show();
                                        }
                                }
                        };

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

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

        }



private boolean isSubsetOf(Collection<String> subset, Collection<String> superset)
        {
            for (String string : subset)
                {
                    if (!superset.contains(string))
                        {
                            return false;
                        }
                }
            return true;
        }
于 2013-06-05T04:46:08.823 回答