从Facebook获取用户访问令牌
我正在构建一个应用程序,允许用户从该应用程序向他们的facebook发布消息。我遇到的问题是,我不知道如何获取发布流权限的用户访问令牌 到目前为止,我得到的是:从Facebook获取用户访问令牌,facebook,facebook-c#-sdk,Facebook,Facebook C# Sdk,我正在构建一个应用程序,允许用户从该应用程序向他们的facebook发布消息。我遇到的问题是,我不知道如何获取发布流权限的用户访问令牌 到目前为止,我得到的是: var fb = new FacebookClient(); dynamic result = fb.GetLoginUrl(new { client_id = AppID, client_secret = AppSecret,
var fb = new FacebookClient();
dynamic result = fb.GetLoginUrl(new
{
client_id = AppID,
client_secret = AppSecret,
grant_type = "client_credentials",
scope = "publish_stream",
state = "http://localhost:17578/Facebook.aspx",
redirect_uri = "http://localhost:17578/Facebook.aspx"
});
这很好,它在querystring中返回一个“code”。但是,我不确定该如何处理该代码。
“旧的”Facebook C#sdk包含FacebookOAuthClient
类,该类具有ExchangeCodeForAccessToken()
方法,但我不知道在新sdk中如何替换此静态方法
因此,真正的问题是:如何交换为访问令牌返回的代码?在获得代码查询字符串参数后,必须调用Facebook Graph API才能获得访问令牌
FacebookClient client = new FacebookClient();
dynamic result = client.Get("oauth/access_token", new { client_id = Settings.Social_Facebook_App_Id, client_secret = Settings.Social_Facebook_Secret_Key, code = Request.QueryString["code"], redirect_uri = Settings.Social_Facebook_Login_Redirect_URI });
if (result.error == null)
{
Session["AccessToken"] = client.AccessToken = result.access_token;
dynamic user = client.Get("me", new { fields = "name,username,email" });
string userName = user.username;
mu = Membership.GetUser(userName);
if (mu == null) // Register
{
RegisterModel rm = new RegisterModel();
rm.Email = user.email;
rm.UserName = userName;
return View("Register", rm);
}
else
{
FormsAuthentication.SetAuthCookie(userName, true);
return RedirectToAction(MVC.Home.Index());
}
}