【问题标题】:BrowserField crashes in BlackBerry 7BlackBerry 7 中的 BrowserField 崩溃
【发布时间】:2012-01-27 14:13:04
【问题描述】:
我正在尝试在 BlackBerry 9930 模拟器上创建一个应用程序,该应用程序使用 BlackBerry Facebook API 对 Facebook 用户进行身份验证。它可以很好地连接到登录页面,但之后整个应用程序崩溃,无论是在要求查看权限时还是在登录成功时。
我注意到身份验证过程进行得很顺利,因为我收到了来自 Facebook 的消息说有登录,所以我怀疑 browserField 和/或模拟器的问题。 (我尝试了 3 种不同的 BB 7 模拟器,但都一样)。
谁有办法解决这个问题?非常感谢。
【问题讨论】:
标签:
blackberry
browserfield
【解决方案1】:
似乎没有人对我有任何解决方案:(。但是,在搞砸之后,我找到了一个解释和解决方案,我想我应该和你分享这个。抱歉迟到了回复,不过。
这是故事。
您可能已经知道,在提供凭据后,Facebook 在 URI 中返回访问令牌,后跟 # 符号。现在,BlackBerry Facebook API 覆盖了 handleNavigation() 方法,以确保如果 URL 包含访问令牌,则不会对其进行处理。这曾经在早期版本(BB 7 之前)中工作,但不知何故,BrowserField 中的 URL 重定向似乎不再调用 handleNavigation(),而是直接调用 handleResource()(我不知道为什么,据我所知,任何地方都没有关于此更改的文档)。结果?它总是尝试处理其中包含 #access_token 的 URL。
最糟糕的是,BB BrowserField 认为 # 表示跳转到页面的一部分(不存在)。其他浏览器(包括黑莓浏览器)似乎已经理解这一点,并且只在屏幕上打印“成功”,而 BrowserField 则没有。发生这种情况时,应用程序停止工作并崩溃,让我回到主屏幕。
所以我所做的是我更改了 BlackBerry Facebook API 的源代码,以便 handleResource() 现在自行检查 access_token 是否在 URL 中。然后,应用程序就可以正常工作了。