Я пытаюсь интегрировать систему скоринга в приложении 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 правильно выполняет вход в систему - это, безусловно, позволяет отправлять запрос приложения, поэтому выглядит так, как будто все идет правильно ...