我有一个基于 BlackBerry Java 的应用程序,它使用 Salesforce 数据并使用 oauth 2 进行身份验证。直到最近用户一直抱怨说,一旦他们进入接受/拒绝 salesforce oauth 页面,单击 Accept 按钮会显示一个 salesforce 404 页面,它一直运行良好。
我在 bb 模拟器 (OS7) 上附加了一个调试器,发现一切正常,直到通过 Salesforce oauth2 用户代理流程在身份验证/授权的最后阶段按下 ACCEPT 按钮时向 Salesforce 发送 POST。此时,帖子将成功,响应正文将包含一些带有小 JavaScript 块的标记,该块仅执行 document.location.href 分配以强制浏览器导航到新 URL。我注意到 URL 不是我所期望的 - 我期望看到 redirect_uri 回调地址 + 访问令牌等数据附加到它的末尾(根据 sf oauth2 文档)。
如果我在说 chrome 中执行相同的流程,那么帖子后的 URL 就是我所期望的。这一切过去都很好,所以我很困惑为什么它会突然停止工作。我听说 Salesforce 在 2011 年底稍微改变了他们的 oauth 2 实施,所以我想知道这是否破坏了我的客户,尽管我不知道如何。
作为一个实验,我删除了除嵌入式 BrowserField 之外的所有代码,并使其导航到 oauth URL,该 URL 是通过根据文档组合消费者密钥和各种其他值而构建的,但在单击时它仍然失败并出现 404 页面成功登录后的接受按钮。
如果我在内置的 bb 浏览器中尝试相同的引导 oauth URL,则完整的身份验证流程可以正常工作,并且我最终会被重定向到带有访问令牌信息的最终回调 URL。
BrowserField 上的 oauth2 用户代理流程(来自 field2 包)是否有其他人遇到问题?