silverlight - 当用户未在 Windows Phone 7 上登录 Facebook 时出现 HTTP 500 错误

标签 silverlight facebook windows-phone-7 facebook-graph-api

我已经将我的 Silverlight WP7 应用程序设置为使用 WebBrowser 控件来允许用户登录 facebook 并授予进一步操作的权限。用户授予权限后,他们将被重定向到一个网页,让他们知道权限已被授予。

链条如下:

App -> opens WebBrowser control at web service #1 -> web service redirects to FB -> Permissions granted -> FB redirects to web service #2 which returns a view.

Web 服务都在外部托管的 MVC 项目中。

这一切都很好,除非用户没有登录到 facebook - 而不是像你期望的那样将他们带到 facebook 登录页面,我只是收到 HTTP 500 内部服务器错误并且没有命中 web 服务 #2。如果用户已登录,那么一切都会照常进行。

我还会提到这只发生在 WP7 设备上,不会发生在我笔记本电脑上的任何浏览器中,包括 IE9。

编辑:为了清楚起见,我的笔记本电脑上的 Web 浏览器通过在 Visual Studio 中调用我的 WebBrowser 控件之前设置断点进行了测试,我抓取了我在那里构建的 Uri,并将其粘贴到Chrome、IE9等

我什至不确定该往哪个方向看!另外,我相信你们可能需要更多详细信息来帮助您解决这个问题 - 请告诉我您可能还需要什么,我会尽力提供。

最佳答案

此代码导致问题。

// Constants.URL_FACEBOOK_LOGIN contains the parameter "display=touch|wap"
_popUpBrowser.Navigate(new Uri(Constants.URL_FACEBOOK_LOGIN));

这段代码解决了这个问题。

// Constants.URL_FACEBOOK_LOGIN contains the parameter "display=touch|wap"
string userAgent = "User-Agent: Mozilla/5.0 (iPhone; U; CPU iPhone OS 4_1 like Mac OS X; en-us) AppleWebKit/532.9 (KHTML, like Gecko) Version/4.0.5 Mobile/8B117 Safari/6531.22.7";
_popUpBrowser.Navigate(new Uri(Constants.URL_FACEBOOK_LOGIN), null, userAgent);

为什么?

因为 Facebook 目前在 Windows Phone 7 User-Agent 值以及“touch”和“wap”的显示参数值出现在同一请求中时存在问题。因此,在使用 WebBrowser 控件时只需发送一个备用的 User-Agent header 即可暂时解决该问题。

我希望这对其他在连接 Facebook Graph API 时遇到讨厌的 500 错误的 Windows Phone 7 开发人员有所帮助。

关于silverlight - 当用户未在 Windows Phone 7 上登录 Facebook 时出现 HTTP 500 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7378801/

相关文章:

actionscript-3 - 是否有可靠的方法来确保已为所有 Facebook 图像服务器检索跨域策略文件?

c# - 周期性任务无效跨线程访问异常

c# - 如何从Windows Phone的其他页面引用应用程序中的属性,全局变量

silverlight - 如何通过 Silverlight 发送 UDP 多播数据包?

c# ->> 运算符在 C# 中有什么作用?

node.js - 从 Facebook Messenger 上传的图像分辨率太低

windows-phone-7 - 获取当前播放的歌曲列表 Windows Phone 7

silverlight - 防止 Silverlight 缩放线宽

c# - 获得发光效果的最佳方式 Windows Phone 7

facebook - 使用 Facebook Javascript SDK 时如何验证用户登录