我是ASP.net编程的新手。这是参考Facebook C#SDK,我已设法设置此SDK上的身份验证所需的所有步骤。但是,我从以下代码中继续获取null:
(参考: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中的某些内容,或者是否有其他方式可以在从处理程序转移到登录页面时存储访问令牌?
答案 0 :(得分:1)
在您的Facebook开发者设置中确保您没有为您的应用选择查询字符串作为身份验证令牌参数!!!
这是默认模式,除非您执行以下操作,否则此操作无效:
打开您的应用页面。
然后去设置 - >验证对话 - >验证令牌参数并选择URI片段。
100%确定这是你的问题。它没有包含在我发现的任何文献中,这真是太遗憾了。
答案 1 :(得分:0)
如果它返回null,那么我会假设没有设置Session值 - 你是否调试过以确保设置会话的代码被命中?
查看链接的文章 - 它使用HttpHandler来做这一点,但没有提到在Web中注册它的任何内容.Config - 你做过这个吗?如果没有看到http://msdn.microsoft.com/en-us/library/46c5ddfy.aspx