无法弄清楚如何使用facebook c#sdk获取访问令牌

时间:2011-06-02 22:14:49

标签: facebook facebook-c#-sdk

我目前正在编写一个在页面选项卡中运行的Facebook应用程序。我正在使用从NuGet中提取的最新版本的C#SDK将其编写为C#中的简单Web窗体应用程序。主页面选项卡工作正常。我从FacebookWebContext.Current.SignedRequest获得了我需要的所有信息,我很好。我正在尝试编写一个页面管理员用来设置应用程序的页面,因此这个页面将位于应用程序设置中的“编辑URL”下。

我真正想做的就是获取当前登录用户的ID,并确定他是否是相关网页的管理员。

我这样做:

var client = new FacebookClient();
dynamic me = client.Get("me");
在Page_Load中

,并获得以下异常:

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

我已经尝试了很多东西来获取访问令牌,但我似乎不知道我做错了什么。有这么简单的方法吗?

更新 我曾经想到我在我的母版页上引用了旧的JS SDK,这引起了一个问题。 (见here)。删除它让我到了通常能够看到用户是否实际登录到Facebook。

2 个答案:

答案 0 :(得分:3)

试试这个:

var fbContext = FacebookWebContext.Current;
if (fbContext.IsAuthenticated())
{
    var client = new FacebookClient(fbContext.AccessToken);
    dynamic me = client.Get("me");
}

答案 1 :(得分:1)

据我了解,登录Facebook并不意味着FacebookWebcontext.Current.isAuthenticated() == true。 Facebook想要确定的是用户已授权该应用程序。那么你应该做的是将页面转发到具有必要权限的facebook授权对话页面(https://www.facebook.com/dialog/oauth?)。 Facebook将确定该应用是否已获得用户授权,并通过发布较新的access_token重定向到redirect_uri。