Ошибка доступа к токену при попытке опубликовать счет Facebook в приложении Canvas - PullRequest
0 голосов
/ 04 сентября 2011

Я пытаюсь интегрировать систему скоринга в приложении Canvas с Facebook, реализованным с использованием MVC 3 и 5.2.1.0 SDK Facebook.

Упрощенный вариант hello-world моего игрового контроллера выглядит так:

public class MyController : Controller
{
  [CanvasAuthorize("publish_action" /*And some others*/)]
  public ActionResult Index()
  {
    var fb = new FacebookWebClient();
    var scores = fb.Get("/me/scores"); // Works (I think)
    fb.Post("/me/scores", new { score = 10 }); // Throws an exception
  }
}

Звонок, чтобы получить очки, похоже, дает мне что-то разумное; Вызов для записи значения оценки выдает "(OAuthException) (# 15) Этот метод должен вызываться с приложением access_token."

Что я пропустил? Идентификатор приложения и секретный ключ правильно установлены в моем файле web.config - например, я могу успешно опубликовать запрос приложения в других частях фактического приложения, не показанных в этой урезанной тестовой копии. Пошаривая с отладчиком, я вижу, что объект FacebookWebClient содержит непустое поле токена доступа и что оно включено в URI, который в конечном итоге использует fb.Post.

На странице результатов Facebook (на которую ссылается Бьёрн) упоминаются только publish_actions, но я попытался включить другие соответствующие разрешения на звучание, такие как offline_access и user_games_activity безрезультатно.

Я предполагаю, что атрибут CanvasAuthorize правильно выполняет вход в систему - это, безусловно, позволяет отправлять запрос приложения, поэтому выглядит так, как будто все идет правильно ...

Ответы [ 2 ]

0 голосов
/ 07 мая 2013

Пожалуйста, смотрите эту ссылку.Вам нужно будет получить приложение на Facebook.Используя apiId и SecretId, вы можете опубликовать информацию, используя приведенную ниже ссылку.Ключ добавляет & scope = manage_pages, offline_access, publish_stream к URL.

примерно так: "https://graph.facebook.com/oauth/access_token?client_id={0}&client_secret={1}&grant_type=client_credentials&scope=manage_pages,offline_access,publish_stream";

0 голосов
/ 04 сентября 2011

Вашему приложению требуется разрешение на запись в профиль пользователя. Вы можете использовать Graph API для запроса необходимых разрешений у пользователя. Если получено разрешение, Facebook предоставит вам необходимый токен доступа, который вы затем сможете использовать в своем запросе к Facebook. Эта практика гарантирует, что вы выполняете только те действия, которые разрешил вам пользователь.

Edit_: после просмотра документов: Вы уверены, что у вас есть необходимые разрешения от пользователя, как описано здесь http://developers.facebook.com/docs/score/?

...