【发布时间】:2012-06-07 14:10:23
【问题描述】:
我正在尝试将 Twitter 共享功能集成到我的 Android PhoneGap 应用程序中,而不是重新实现控件来缩短 URL 和跟踪推文长度,我想我会在 https://twitter.com/intent/... 使用他们预制的网络意图
所以我试图在 ChildBrowser 窗口中启动一个类似 https://twitter.com/intent/tweet?text=Hello 的 URL,这样我就可以让 Twitter 的界面接管。用户可以使用他们的凭据登录,一旦他们登录,来自 URL 参数的文本就会出现在 Tweet 框中。
这行不通。当我使用 http://twitter.com/intent/... 而不是 https://twitter.com/intent/... 时,ChildBrowser 会显示登录屏幕,但是一旦用户提交他们的凭据,屏幕就会变白。我怀疑这是因为 Twitter 切换到了 HTTPS。
我通过尝试简单的window.open 而不是window.plugins.childBrowser.showWebPage 来确认是这种情况。在 Android 上使用本机浏览器时,我对 HTTP / HTTPS 没有任何问题。但是,本机浏览器提示我接受未经验证的安全证书。我怀疑这是 ChildBrowser 的问题 - 它不知道如何处理该提示。
使用本机浏览器弹出窗口根本不是一种选择:用户需要能够在点击“Tweet”或“Follow”等后退出进程,但 Android 设备上的“返回”按钮只是移动由于他们的意图,历史倒退到 POST 动作。然后,它会从头开始重新启动应用程序,而不是让您回到原始状态。
如何配置 ChildBrowser/我的 Android Phonegap 应用程序以覆盖 Twitter 上的 SSL 问题,以便我可以在 Childbrowser 中运行 Web Intent?
相关代码为:
base="https://twitter.com/intent/tweet?text=";
URL=base+encodeURIComponent("it works!");
// works, but asks to accept a certificate
window.open(URL);
// blank white page
window.plugins.childBrowser.showWebPage(URL, { showLocationBar: true });
我的cordova.xml 文件的白名单配置如下:
<access origin="http://127.0.0.1*"/> <!-- allow local pages -->
...我不怀疑这应该是个问题。但是,交换 origin=".*" 的基本测试没有产生任何行为变化。
我还检查了 Twitter 意图登录页面的 HTTP 和 HTTPS 标头。似乎没有任何异常 - 它们是相同的,除了 HTTPS 的 Strict-Transport-Security 标头,它可以在其他地方(例如 Github)使用。
请帮忙!
【问题讨论】:
-
顺便说一句 - 我已经尝试在 Android 清单文件中设置
debuggable="true",但这不起作用。 -
@Simon 另一个难题 - 我正在使用 Phonegap / Cordova 1.7.0。读完groups.google.com/group/phonegap/browse_thread/thread/…后,我认为这可能值得了解。
-
显然,我不是唯一一个在 Childbrowser 中遇到 Twitter 问题的人。请看:stackoverflow.com/q/10107661/697061
标签: android twitter cordova childbrowser