Отправка запроса, сгенерированного приложением 2.0, другому, чем "/ me" - PullRequest
1 голос
/ 06 октября 2011

Я пытаюсь отправить сгенерированный приложением запрос, используя JS SDK или API-интерфейс Graph, но мне не удается и я в отчаянии.Проблема в том, что когда я отправляю запрос зарегистрированному пользователю, все в порядке, но когда я пытаюсь отправить другому пользователю (даже этот пользователь уже авторизовал мое приложение), я получаю исключение OAuth "# 2 Пользователь не может отправить этот запрос:Неизвестная ошибка ", иногда" Не удалось отправить какие-либо запросы приложения ".

В моем приложении включен запрос 2.0, и ему разрешены разрешения publish_stream, read_stream и user_about_me.Те же сообщения об ошибках, которые я описал, отображаются даже в Graph API Explorer.

Точно такая же проблема описана здесь с использованием JS SDK: Отправка запроса, сгенерированного приложением, с помощью JavaScript SDK

... и здесь, используя Graph API: Отправка сгенерированного приложения приложения другим пользователям Facebook на Java

Пожалуйста, помогите.

1 Ответ

0 голосов
/ 28 ноября 2011

Если вы хотите отправить запрос пользователю, вы должны отправить POST в Graph API '/ user_id / apprequests' с помощью токена доступа к приложению (https://developers.facebook.com/docs/authentication/#applogin). Этот вызов предназначен для выполнения на стороне сервера, так как вы не ' хочу поделиться своим токеном доступа к приложению:

curl -F 'access_token=APP_ACCESS_TOKEN' \
-F 'message=From the app to the user.' \
https://graph.facebook.com/USER_ID/apprequests

Того же можно добиться, используя токен доступа пользователя только от получателя (USER_ID):

curl -F 'access_token=USER_ACCESS_TOKEN' \
-F 'message=From the app to the user.' \
https://graph.facebook.com/USER_ID/apprequests

В JS SDK, если поле токена доступа не добавлено, токен доступа по умолчанию будет зарегистрированным пользователем. Зная, что вышеупомянутый вызов, который отправит запрос вошедшему в систему пользователю, будет:

FB.api('/me/apprequests', 'POST',  {message: 'From the app to the user.'});

Первый вызов также можно выполнить с помощью JS SDK, добавив в параметры токен доступа к приложению. Однако это НЕ ИСПОЛЬЗУЕТСЯ, поскольку вы не хотите делиться маркером доступа к приложению на стороне клиента.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...