我正在编写MVC 3应用程序并使用Facebook C# SDK。请检查此登录信息有什么问题:
[Authorize(Roles = "Admin")]
[FacebookAuthorize(
LoginUrl = "https://graph.facebook.com/oauth/authorize?client_id=186437571372857&redirect_uri=http://portugalparty.com/Admin/AIndex/&scope=publish_stream,create_event,email",
Perms = "publish_stream,create_event,email")]
首先,用户输入网站登录信息,然后询问Facebook登录信息,并在必要时输入权限。
然后,在Facebook登录和权限设置后,我在我的网站和Facebook之间观看无休止的网球游戏,它永远不会停止!
有什么问题,我该怎么办?
以下是我的web.config中与此SDK相关的内容:
我没有写过Canvas应用程序。我只想在我的域名中的MVC应用程序中使用Facebook。
<system.web>
<httpHandlers>
<add verb="*" path="facebookredirect.axd"
type="Facebook.Web.FacebookAppRedirectHttpHandler, Facebook.Web" />
</httpHandlers>
我看过用户输入上述动作一次然后我去做其他事情。在那个时刻和现在之间可能发生了许多事情。
一个是我在Facebook应用设置中更改了网站网址
来自"http://portugalparty.com/Admin/Index/"
到"http://portugalparty.com/Admin/AIndex/"
。
Facebook表示可能需要几分钟时间才能在所有服务器中反映这些变化,但已经有好几个小时了!也许这不是问题。
你知道这是什么问题吗?如果你告诉我要找什么,我可以寻找更多信息。
由于
我在我网站的另一个页面上登录并重定向了具有FacebookAuthorize属性的操作的URL,但问题仍然存在。
我查询了我网站上的Facebook cookie(portugalparty.com),并意识到了这些数据:
this.Request.Cookies[1]
{System.Web.HttpCookie}
Domain: null
Expires: {01-01-0001 00:00:00}
HasKeys: true
HttpOnly: false
Name: "fbs_186437571372857"
Path: "/"
Secure: false
Value: "\"access_token=234%7C0e147965318dff91499e702d-1270460469%7CKzr7Gp9oY1FOkT...........fsd...fUf14Eb3223457fG6fWMI&base_domain=portugalparty.com&expires=0&secret=313c9.a.sd7861&session_key=0e147965318dff91499e702d-1270460469&sig=702511b1gdfgdfgdfg23tuy587684653252354356ed25c03c989&uid=1270456469\""
Values: {%22access_token=186437571372857%257C0e1gte235318dff91499e702d-1270460469%257C324zr7Gp9oY1FOkTnU14Eb7H6fWMI&base_domain=portugalparty.com&expires=0&secret=fb196116d9dfds32jty6253456645c97861&session_key=0e1479653fsd3245221491499e702d-1270460469&sig=702511b1a35423543534f45657d25c03c989&uid=127675444429%22}
我对cookie知之甚少,但为什么域名属性设置为null?在Firefox中,我可以在Cookies窗口中看到我域中文件夹中的cookie。
为什么Expires属性设置为开始时间?我要求离线访问权限,但我想这与cookie无关,对吧?
Cookie的详细信息是否正常?
我更改了我的hosts文件,以便在本地运行MVC项目,就好像我在线一样。为了避免手动编写端口,我通过IIS运行项目(我选择“使用本地IIS Web服务器”选项。可能是因为这个吗?
谢谢!
答案 0 :(得分:2)
我认为你可能错过了身份验证的Javascript部分。当您开发连接应用程序时,FacebookAuthorize过滤器仅检查用户是否具有权限,然后将其发送到您网站上将使用Javascript SDK提示用户权限的页面。您设置为LoginUrl的URL无效。该网址应该是您网站上的/ login。然后在登录页面上使用Facebook Javascript SDK实际处理身份验证。有关详细信息,请参阅facebook文档:http://developers.facebook.com/docs/guides/web/#registration