Как получить токен доступа текущего пользователя из Facebook SDK в C #?Не токен доступа к приложению - PullRequest
0 голосов
/ 20 ноября 2018

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

public static string GetAppAccessToken()
    {
        var fb = new FacebookClient();

        dynamic result = fb.Get("oauth/access_token", new
        {
            client_id = "****************",
            client_secret = "*******************",
            grant_type = "client_credentials"
        });

        return result.access_token;
    }

, но как получить токен доступа текущего пользователя, который вошел в систему с помощью FacebookSDK использует C #?

1 Ответ

0 голосов
/ 21 ноября 2018
    using System.Linq;
    using System.Net;
    using System.Web;
    using System.Web.Script.Serialization;
    using System.Web.UI;
    using System.Web.UI.WebControls;
    using Facebook;
    using Newtonsoft.Json;
    using Newtonsoft.Json.Linq;    

        public class AccessUser
        {
            public string access_token { get; set; }
            public string token_type { get; set; }
            public string expires_in { get; set; }
        }

        private void CheckAuthorization()
            {
                string app_id = "**************";
                string app_secret = "************************";

                if (Request["code"] == null)
                {
                    var redirectUrl = string.Format("https://graph.facebook.com/oauth/authorize?client_id={0}&redirect_uri={1}", app_id, Request.Url.AbsoluteUri);
                    Response.Redirect(redirectUrl);
                }
                else
                {
                    AccessUser au = new AccessUser();

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

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

                    using (HttpWebResponse response = request.GetResponse() as HttpWebResponse)
                    {
                        StreamReader reader = new StreamReader(response.GetResponseStream());
                        string vals = reader.ReadToEnd();
                        au = JsonConvert.DeserializeObject<AccessUser>(vals);
                        string token = au.access_token;

                    }
                }
            }

Приведенный выше код вернет токен пользователя.

Примечание: Построен с использованием aspx page и основан на вызовах API V3.2 Graph,Для версий, подобных 1 и 2, нам нужно отправить Scope в URI.

Если кому-то требуется исходный код, дайте мне знать ...

...