Facebook C # SDK и токен доступа - PullRequest
14 голосов
/ 02 марта 2011

Я бы хотел иметь возможность аутентифицироваться (мой профиль, а не только мое приложение) в моем собственном веб-приложении с использованием SDK Facebook C #.Используя Graph API, я могу получить токен доступа, но этот токен не работает должным образом с Facebook C #, поскольку кажется, что он не имеет состояния.

Выдается сообщение об ошибке:

(OAuthException) An active access token must be used to query information about the current user.

Я копался в Facebook C # SDK и документации, и большая часть информации, которую я вижу, перенаправляет пользователей на страницу входа, а это не то, что я ищу.

Кто-нибудьУ меня есть хороший пример автоматической регистрации, чтобы я мог получить свою собственную информацию?

TIA

Ответы [ 3 ]

9 голосов
/ 03 марта 2011

Когда вы говорите «себе», вы имеете в виду приложение или своего фактического пользователя в Facebook?

Если это просто ваше приложение, вы можете получить токен доступа, разместив сообщение на этом URL:

https://graph.facebook.com/oauth/access_token?grant_type=client_credentials&client_id=APP_ID_HERE&client_secret=APP_SECRET_HERE

Вы можете использовать этот токен доступа для выполнения действий от имени ваших пользователей, если они авторизовали ваше приложение для этого.

2 голосов
/ 03 марта 2011

У меня была та же проблема, когда маркер доступа не включал часть сеанса. Пожалуйста, проверьте мой ответ на этот похожий вопрос - обменный код для токена facebook-c # -sdk .

Вот пример с моего контроллера Home

[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();
}

Редактировать

Теперь я понимаю вопрос лучше. Как насчет этого?

var auth = new Authorizer(FacebookContext.Current.AppId, FacebookContext.Current.AppSecret, HttpContext);

auth.Authorize();

Из документации:

public bool Authorize () Участник Facebook.Web.Authorizer

Резюме: Авторизует пользователя, если пользователь не вошел в систему или приложение не имеет всех выделенных разрешений.

Возвращает: Вернуть true, если пользователь прошел проверку подлинности и приложение имеет все указанные разрешения.

1 голос
/ 03 июля 2011

Я не знаю, будет ли это работать для вас:

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

удачи !!

...