Аутентификация На Вкладке Facebook


Можно ли аутентифицировать пользователя из приложения tab?

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

Моей первой догадкой было использование 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/приложение/mytab ) возвращает правда при выполнении страницы от страницы вкладку ( http://www.facebook.com/myfanpage?СК=app_myappid ) возвращает ложь !

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

1 2

1 ответ:

На странице Facebook вы можете определить, авторизовал ли пользователь ваше приложение или нет, изучив signed_request. Если 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.