Facebook С# SDK и токен доступа
Я хотел бы иметь возможность аутентифицировать себя (мой профиль, а не только мое приложение) в своем собственном веб-приложении, используя SDK для Facebook. Используя API-интерфейс Graph, я могу получить токен доступа, но этот токен, похоже, не работает должным образом с Facebook С#, поскольку он, кажется, без гражданства.
Возникающая ошибка:
(OAuthException) An active access token must be used to query information about the current user.
Я ткнулся с SDK на Facebook и документацией, и большая часть информации, которую я вижу, - перенаправить пользователей на страницу входа, которая не является тем, что я ищу.
У кого-нибудь есть хороший образец автозапуска в себе, чтобы я мог поднять свою собственную информацию?
ТИА
Ответы
Ответ 1
Когда вы говорите "самостоятельно", вы имеете в виду приложение или ваш фактический пользователь facebook?
Если это просто ваше приложение, вы можете получить токен доступа через POSTing по этому URL-адресу:
https://graph.facebook.com/oauth/access_token?grant_type=client_credentials&client_id=APP_ID_HERE&client_secret=APP_SECRET_HERE
Вы можете использовать этот токен доступа для выполнения действий от имени своих пользователей, если они разрешили ваше приложение для этого.
Ответ 2
У меня была та же проблема, когда токен доступа не включал часть сеанса. Пожалуйста, проверьте мой ответ на этот похожий вопрос - код обмена для токена facebook-С# -sdk.
Здесь образец из моего Домашнего контроллера
[CanvasAuthorize]
public ActionResult Index()
{
var app = new FacebookClient(new Authorizer().Session.AccessToken);
dynamic me = app.Get("me");
ViewBag.Firstname = me.first_name;
ViewBag.Lastname = me.last_name;
return View();
}
Edit
Теперь я понимаю вопрос лучше. Как насчет этого?
var auth = new Authorizer(FacebookContext.Current.AppId, FacebookContext.Current.AppSecret, HttpContext);
auth.Authorize();
Из документации:
public bool Авторизовать() Участник Facebook.Web.Authorizer
Резюме:
Авторизовать пользователя, если пользователь не вошел в систему, или приложение не имеет всех разрешенных прав.
Возвращает:
Возвращает true, если пользователь аутентифицирован, и приложение имеет все указанные разрешения.
Ответ 3
Я не знаю, будет ли это работать для вас:
using Facebook.Web;
using Facebook;
using System.Dynamic;
var auth = new CanvasAuthorizer { Permissions = new[] { "user_about_me"} };
if (auth.Authorize())
{
}
и включить это в aspx:
<input type="hidden" name="signed_request" value="<%: Request.Params["signed_request"]%>"/>
удачи!!