Явно общий доступ не работает для публикации — Facebook Android SDK Open Graph Story

В настоящее время я использую Facebook Android SDK 3.19.1, чтобы опубликовать историю Open Graph на временной шкале нашего пользователя.

История добавляется в журнал активности пользователя, но не отображается на временной шкале.

У меня есть пользовательское действие и объект для моей истории, и я установил параметр «Явно совместно используемый» для своего действия и соответствующих свойств в коде. Я также представил и был одобрен для разрешения «publish_actions».

Я что-то упустил здесь?

 private void postGraph(final Bundle b, final Request.Callback callback) {
    // Set up the request callback to handle errors
    Request.Callback errorCallback = new Request.Callback() {

        @Override
        public void onCompleted(Response response) {
            // Log any response error
            FacebookRequestError error = response.getError();
            if (error != null) {
                callback.onCompleted(response);
                Log.i("PostGraph", error.getErrorMessage());
            }
        }
    };

    // Create a batch request
    RequestBatch requestBatch = new RequestBatch();

    // Request: Staging image upload request
    // --------------------------------------------

    boolean hasImage = b.containsKey(BUNDLE_PICTURE);
    // If uploading an image, set up the first batch request
    // to do this.
    if (hasImage) {
        // Set up image upload request parameters
        Bitmap image = BitmapFactory.decodeFile(b.getString(BUNDLE_PICTURE));

        // Create the request for the image upload
        Request imageRequest = Request
                .newUploadStagingResourceWithImageRequest(Session.getActiveSession(),
                        image, errorCallback);

        // Set the batch name so you can refer to the result
        // in the follow-on object creation request
        imageRequest.setBatchEntryName("imageUpload");

        // Add the request to the batch
        requestBatch.add(imageRequest);
    }

    // Request: Object request
    // --------------------------------------------

    // Set up the OpenGraphObject representing the book.
    OpenGraphObject obj = OpenGraphObject.Factory.createForPost(mGraphObjectName);
    if (hasImage) {
        obj.setImageUrls(Arrays.asList("{result=imageUpload:$.uri}"));
    }
    if (b.containsKey(BUNDLE_NAME)) {
        obj.setTitle(b.getString(BUNDLE_NAME));
    }
    if (b.containsKey(BUNDLE_LINK)) {
        obj.setUrl(b.getString(BUNDLE_LINK));
    }
    if (b.containsKey(BUNDLE_MESSAGE)) {
        String message = b.getString(BUNDLE_MESSAGE);
        if (!TextUtils.isEmpty(message)) {
            obj.setDescription(b.getString(BUNDLE_MESSAGE));
            obj.setProperty("message", b.getString(BUNDLE_MESSAGE));
        }
    }

    // Create the request for object creation
    Request objectRequest = Request.newPostOpenGraphObjectRequest(Session.getActiveSession(),
            obj, errorCallback);

    // Set the batch name so you can refer to the result
    // in the follow-on publish action request
    objectRequest.setBatchEntryName("objectCreate");

    // Add the request to the batch
    requestBatch.add(objectRequest);

    // Request: Publish action request
    // --------------------------------------------
    OpenGraphAction postAction = OpenGraphAction.Factory.createForPost(mGraphActionName);
    // Refer to the "id" in the result from the previous batch request
    postAction.setProperty("object", "{result=objectCreate:$.id}");
    postAction.setExplicitlyShared(true);
    postAction.setProperty("explicitly_shared", "true");

    // Create the publish action request
    Request actionRequest = Request.newPostOpenGraphActionRequest(Session.getActiveSession(),
            postAction, callback);

    // Add the request to the batch
    requestBatch.add(actionRequest);

    // Execute the batch request
    requestBatch.executeAsync();
}

person alenz316    schedule 23.01.2015    source источник


Ответы (1)


Я связался со службой поддержки Facebook и получил следующий ответ:

Это по замыслу. Явно указывает на то, что пользователь принял решение поделиться историей. Поделиться гарантированно будет отображаться в ленте новостей пользователя, но не на его временной шкале.

Как вы упомянули, это отображается в журнале действий, и затем они могут выбрать раскрывающийся список для конкретной истории, изменив выбранный параметр с «Разрешено на временной шкале» на «Показано на временной шкале».

Так что моя проблема, видимо, не проблема. :)

Но я бы все же посчитал функциональность немного запутанной. Я полагаю, что сообщение, опубликованное явным образом, будет отображаться на временной шкале пользователя, и оно будет иметь описанное выше поведение, если бы параметр «Общий доступ явным образом» не был отмечен. Думаю, моя проблема была просто в семантике.

person alenz316    schedule 28.01.2015