我正在尝试将 Twitter 共享功能集成到我的 Android PhoneGap 应用程序中,而不是重新实现控件来缩短 URL 和跟踪推文长度,我想我会在https://twitter.com/intent/...
所以我试图https://twitter.com/intent/tweet?text=Hello
在 ChildBrowser 窗口中启动一个 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 意图?
相关代码为:
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)使用。
请帮忙!