我目前正在编写一个在页面选项卡中运行的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。
答案 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。