如何在 C# 中从 Facebook SDK 获取当前用户访问令牌?不是应用访问令牌

Posted

技术标签:

【中文标题】如何在 C# 中从 Facebook SDK 获取当前用户访问令牌?不是应用访问令牌【英文标题】:How to get current user access token from Facebook SDK in C#? Not the App access token 【发布时间】:2018-11-20 09:58:54 【问题描述】:

下面的代码展示了获取App Access Token

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;
    

但是如何使用 Facebook SDK 使用 C# 获取 当前登录用户的访问令牌

【问题讨论】:

你为什么要那个?我希望这是在用户和 facebook 之间。为什么你会担心? 这样我就可以使用该访问令牌来获取当前登录用户的信息... 用户是否允许您这样做? @Adyson 正在尝试使用 c# 将内容发布到 facebook,以便如果我从 facebook SDK 获取用户访问令牌,我可以轻松发布内容... 如果你想获取email,name,id,pictureurl,你不需要获取用户访问令牌。应用访问令牌就足够了 【参考方案1】:
    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 页面构建,这是基于 V3.2 Graph API 调用。像 1 和 2 这样的版本,我们需要在 URI 中发送 Scope

如果有人需要源代码,请告诉我...

【讨论】:

@GertArnold 完成。

以上是关于如何在 C# 中从 Facebook SDK 获取当前用户访问令牌?不是应用访问令牌的主要内容,如果未能解决你的问题,请参考以下文章

在 ASP.Net MVC 应用程序中从 Facebook SDK for .Net 获取 Facebook 用户访问令牌

如何在 ios sdk 中从 facebook 注销

如何在 Swift 中从 Facebook 获取用户名

如何在 ios 中从 facebook 获取朋友的最新状态?

如何在统一引擎中从 Facebook API 获取用户名和用户个人资料图片?

Facebook C# SDK,用图片创建事件