1

我正在尝试将 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)使用。

请帮忙!

4

1 回答 1

0

ChildBrowser 不受白名单的约束。白名单仅用于防止 PhoneGap 主应用程序在受信任域之外运行代码。

我相信如果您从 Android 获取最新的 ChildBrowser 代码,您将不会再遇到这个问题。我们最近进行了一些更改,使其更加强大。

此外,Libby 有一个很好的集成 Twitter 和 ChildBrowser 的教程。

http://www.mobiledevelopersolutions.com/home/start/twominutetutorials/tmt5p1

于 2012-06-02T20:20:02.347 回答