无法弄清楚如何使用Facebook C# SDK获取访问令牌



我目前正在编写一个在页面选项卡中运行的Facebook应用程序。我正在用C#编写一个简单的Web窗体应用程序,使用从NuGet中提取的最新版本的C#SDK。主页面选项卡工作正常。我从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,这导致了一个问题。(请参见此处)。删除它让我变得通常能够查看用户是否真的登录了Facebook。

试试这个:

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

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

最新更新