3

如何使用 android sdk 将照片分享到 facebook,而不在我的应用程序中放置 facebook 登录按钮。(我希望他们去 facebook 应用程序进行授权并在他们点击分享按钮时回来,而不是先登录然后分两步点击分享)。具体来说,我会在 /me/photos 上发布一个 facebook 开放图表帖子,以便将其上传到我的默认应用相册。但是,即使用户单击 facebook 身份验证提示,我也会收到未登录的会话错误。

final Session session = Session.getActiveSession();


Session.openActiveSession(this, true, new Session.StatusCallback() {

    @Override
    public void call(final Session session, final SessionState state,
            final Exception exception) {
        Request request = Request.newUploadPhotoRequest(session, image, new Request.Callback() {
            @Override
            public void onCompleted(Response response) {
                  Toast.makeText(getApplicationContext(), "Fact shared", Toast.LENGTH_SHORT).show();
              }
        });
        request.executeAsync();
    }
});
4

1 回答 1

0

您的代码有几个问题:

  1. 为了发布照片,您需要发布权限,这需要requestNewPublishPermissions在您首次打开会话后再次调用。

  2. 您在call()方法中立即发出请求,而不检查 if session.isOpened()。这是有问题的,因为:

    一个。会话经过多种状态(包括OPENING、OPENED等),都会导致call()被调用,只有在OPENED或OPENED_TOKEN_UPDATED状态时才能发出请求;

    湾。在会话打开期间可能会出现异常(例如用户取消),这可能导致会话关闭。您需要通过 session.isOpened()支票来保护您的请求。

于 2013-02-22T18:03:22.593 回答