Аутентификация На Вкладке 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 ответ:
На странице 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.