Facebook C # SDK подписанный запрос является нулевым в IsAuthorized () - PullRequest
1 голос
/ 08 сентября 2011

Я исследовал тему, упомянутую в названии. Решения говорят (кроме , это ), что исключение "Precondition failed: !string.IsNullOrEmpty(settings.AppId)", выданное FacebookWebContext.IsAuthorized(), вызвано не установкой подписанного запроса, который можно получить из строки запроса.

Я занимаюсь разработкой веб-сайта ASP.NET MVC, в котором я хотел бы реализовать аутентификацию Facebook Connect. Часть аутентификации работает нормально, но если я пытаюсь проверить разрешения, которые пользователь дал приложению (либо с HasPermissions(), либо с IsAuthorized()), я получаю эту ошибку.

FacebookWebContext правильно инициализируется с настройками приложения. И насколько я знаю, signed_request доступен только в приложениях Canvas, или я не прав?

Как можно проверить разрешения на обычном веб-сайте после аутентификации пользователя?

Заранее спасибо!

Edit: Вот подробности исключения, которое выдается:

  System.Diagnostics.Contracts.__ContractsRuntime.ContractException occurred   Message=Precondition failed: !string.IsNullOrEmpty(settings.AppId)   Source=Facebook.Web   StackTrace:
       at System.Diagnostics.Contracts.__ContractsRuntime.TriggerFailure(ContractFailureKind kind, String message, String userMessage, String conditionText, Exception inner)
       at System.Diagnostics.Contracts.__ContractsRuntime.ReportFailure(ContractFailureKind kind, String message, String conditionText, Exception inner)
       at System.Diagnostics.Contracts.__ContractsRuntime.Requires(Boolean condition, String message, String conditionText)
       at Facebook.Web.FacebookWebContext..ctor(IFacebookApplication settings, HttpContextBase httpContext)
       at Facebook.Web.FacebookWebContext..ctor()
       at Facebook.Web.FacebookWebContext.get_Current()
       at Facebook.Web.FacebookWebClient..ctor(String accessToken)
       at Facebook.Web.FacebookWebContext.HasPermissions(String accessToken, String appId, Int64 userId, String[] permissions)
       at Facebook.Web.FacebookWebContext.IsAuthorized(String[] permissions)
       at Piedone.FacebookTest.IsAuthorized(String[] permissions)   InnerException:

1 Ответ

1 голос
/ 08 сентября 2011

не забудьте установить настройки facebook в web.config

 <configSections>
    <section type="Facebook.FacebookConfigurationSection, Facebook" name="facebookSettings" allowLocation="true" allowDefinition="Everywhere" />
</configSections>

<facebookSettings appId = "{app_id}" appSecret = "{app_secret}"/>

SDK необходимо знать идентификатор приложения и секретный порядок приложений для извлечения информации, установленной в JavaScript Javascript SDK.

Возможно, вы также захотите проверить папку «Samples» в исходном коде.

...