1

我是 ASP.net 编程的新手。这是对 Facebook C# SDK 的参考,我已经设法设置了在此 SDK 上进行身份验证所需的所有步骤。但是,我不断从以下代码中获得空值:

(参考:http ://csharpsdk.org/docs/web/getting-started#5 )

var accessToken = Session["AccessToken"].ToString(); //This line returns null and crashes
var client = new FacebookClient(accessToken);
dynamic result = client.Get("me", new { fields = "name,id" });
string name = result.name;
string id = result.id;

就像在示例中一样,我设置了一个通用处理程序来设置要存储在 HttpContext.Session 对象中的会话变量。

我什至尝试修改违规行以直接访问 HttpContext 并检索访问令牌:

var accessToken = HttpContext.Current.Session["AccessToken"].ToString();

但这产生了相同的结果。

我是否错过了 webconfig 中的某些内容,或者在从处理程序转移到登录页面时是否有其他方法可以存储访问令牌?

4

2 回答 2

1

确保在您的 Facebook 开发人员设置中,您没有为您的应用选择查询字符串作为身份验证令牌参数!!!

这是默认模式,除非您执行以下操作,否则它将不起作用:

http://developer.facebook.com

打开您的应用页面。

然后转到 Settings --> Auth Dialog --> Auth Token Parameter 并选择 URI Fragment。

100% 确定这是你的问题。它没有包含在我找到的任何文献中,真是太可惜了。

于 2012-08-08T20:37:20.447 回答
0

如果它返回 null 那么我会假设 Session 值没有被设置 - 你是否调试过以确保设置会话的代码被命中?

查看链接的文章-它使用 HttpHandler 来执行此操作,但没有提及在 Web.Config 中注册它的任何内容-您这样做了吗?如果看不到这里http://msdn.microsoft.com/en-us/library/46c5ddfy.aspx

于 2012-06-13T09:41:16.757 回答