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

问题描述:

我目前正在编写一个在页面选项卡中运行的Facebook应用程序。我用C#编写了一个简单的Web Forms应用程序,使用从NuGet提取的最新版本的C#SDK。主页面选项卡正常工作。我从FacebookWebContext.Current.SignedRequest获取所需的所有信息,我很好。我正在尝试编写一个页面,该页面管理员将使用该页面来设置应用程序,因此这是在应用程序设置中的“编辑URL”下面的页面。无法弄清楚如何使用Facebook获取访问令牌c#sdk

我真正想要做的就是获取当前登录的用户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。

试试这个:

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

谢谢,我基本上做了变化。我想,我的问题是IsAuthenticated()返回false,即使我已登录到Facebook,并且正在通过Facebook应用程序设置链接打开Edit URL页面。基本上,我不确定在这种情况下,如何告诉页面被登录的Facebook用户打开。我已经看到一些迹象表明,Facebook __用于将signed_request传递到“编辑URL”页面,但似乎他们现在没有。 – 2011-06-03 12:43:16

+0

在你的Facebook的JavaScript初始化你有'cookie:true'作为其中一个选项?从我的理解,这是什么让服务器访问Facebook会话。 – Charlino 2011-09-20 17:16:23

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

+0

感谢发布。我实际上认为你所描述的将适用于IsAuthorized()调用而不是IsAuthenticated()调用。我正在与Facebook集成一个新的网站,我再次面临这个问题。 (我上次放弃了。)现在我发现,即使我确实登录Facebook并授权了应用程序,我仍然从这两个函数中获得虚假回报。 – 2011-07-25 19:00:29