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"]%>"/>

удачи!!