обменять код на токен facebook-c # -sdk - PullRequest
3 голосов
/ 21 февраля 2011

Я использую Facebook-C # -Sdk v5.0.3 для создания приложения веб-форм без холста в vb.net, и у меня возникают проблемы при обмене возвращенного кода facebook для access_token. У кого-нибудь есть пример (C # или vb.net), на который я могу посмотреть?

Спасибо огромное сообщество Stackoverflow!

Ответы [ 2 ]

3 голосов
/ 02 марта 2011

Попробуйте это:

var app = new FacebookClient(FacebookContext.Current.AppId, FacebookContext.Current.AppSecret);
var accessToken = app.AccessToken

или это:

var app = new FacebookClient(new Authorizer().Session.AccessToken);
var accessToken = app.AccessToken
0 голосов
/ 15 июля 2015

Вы можете использовать appId и appSecret в качестве маркера доступа к приложению.

Например, вы можете сделать это при отладке токена пользователя, чтобы увидеть, действителен ли он

            var client = new FacebookClient();
            dynamic result = client.Get("debug_token", new
            {
                input_token = user.AccessToken,
                access_token = string.Format("{0}|{1}", appId, appSecret)
            });

Позже вы можете проверить файл result.data.is_valid, чтобы узнать, действителен ли токен пользователя.

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

    if (Request["code"] == null)
                    {
                        Response.Redirect(string.Format(
                            "https://graph.facebook.com/oauth/authorize?client_id={0}&redirect_uri={1}&scope={2}",
                            appId, Request.Url.AbsoluteUri, scope));
                    }
                    else
                    {
                        var tokens = new Dictionary<string, string>();

                        string url =
                            string.Format(
                                "https://graph.facebook.com/oauth/access_token?client_id={0}&redirect_uri={1}&scope={2}&code={3}&client_secret={4}",
                                appId, Request.Url.AbsoluteUri, scope, Request["code"], appSecret);

                        var request = WebRequest.Create(url) as HttpWebRequest;

                        using (var response = request.GetResponse() as HttpWebResponse)
                        {
                            var reader = new StreamReader(response.GetResponseStream());

                            string vals = reader.ReadToEnd();

                            foreach (string token in vals.Split('&'))
                            {
                                tokens.Add(token.Substring(0, token.IndexOf("=")),
                                    token.Substring(token.IndexOf("=") + 1, token.Length - token.IndexOf("=") - 1));
                            }
                        }

                        // Get access token from tokens
                        var accessToken = tokens["access_token"];

                    }

Это перенаправит пользователя на Facebook с запросом разрешения. Затем Facebook вернется к обратному URL-адресу с кодом в строке запроса, используйте этот код, чтобы получить access_token пользователя.

Имейте в виду, что это будет кратковременный токен доступа, вам, вероятно, придется его расширить.

...