Аутентификация на вкладке Facebook - PullRequest
2 голосов
/ 06 мая 2011

Можно ли аутентифицировать пользователя из приложения с вкладками?

Я пытаюсь создать приложение с вкладками для ASP.NET MVC 3 в Facebook, которое необходимо публиковать на стене.

Моим первым предположением было использование CanvasAuthorizeAttribute

[CanvasAuthorize(Permissions="publish_stream")]

, но из-за этого моя вкладка перенаправлялась на страницу авторизации для входа на Facebook и затем возвращалась на страницу canvas и не оставалась в fanpage (вкладка).

Затем я удаляю CanvasAuthorize и пробовал следующее

public string Index()
{
    bool isAuthorized = FacebookWebContext.Current.IsAuthorized("publish_stream");

    return isAuthorized.ToString();
}

, из которого я мог бы решить запустить всплывающее окно авторизации, если пользователь неавторизован, но я столкнулся с проблемой здесь.

  • Предварительная авторизация приложения с разрешением stream_publish другими средствами, а затем запуск страницы как приложения (http://apps.facebook.com/myapp/mytab) возвращает true при запуске страницы с вкладки фан-страницы (http://www.facebook.com/myfanpage?sk=app_myappid) возвращает false !

Почему вкладка не может прочитать разрешение, кроме холстастраница может?

1 Ответ

3 голосов
/ 06 мая 2011

На странице Facebook вы можете определить, авторизовал ли пользователь ваше приложение или нет, проверив подписанный запрос.Если user_id и oauth_token переданы, то пользователь уже авторизовал ваше приложение.Если нет, то вы можете сделать что-то подобное из вашего действия контроллера:

    string[] extendedPermissions = new[] { "publish_stream", "manage_pages" };
    var oauth = new FacebookOAuthClient(FacebookWebContext.Current.Settings);
    var parameters = new Dictionary<string, object> {
                { "redirect_uri", "http://www.facebook.com/pages/{SomeFacebookPage}?sk=app_{appId}"}
            };

    parameters["scope"] = String.Join(",", extendedPermissions);
    var loginUrl = oauth.GetLoginUrl(parameters);

    return Redirect(loginUrl.AbsoluteUri);

После того, как ваш пользователь аутентифицирует ваше приложение, он будет отправлен на «redirect_uri», который может быть вкладкой вашего приложения на FacebookСтраница.

...