1

Twitter 共有機能を Android PhoneGap アプリケーションに統合しようとしていますが、URL を短縮してツイートの長さを追跡するためのコントロールを再実装するのではなく、事前に作成された Web インテントを使用することにしました。https://twitter.com/intent/...

そこでhttps://twitter.com/intent/tweet?text=Hello、ChildBrowser ウィンドウのように URL を起動して、Twitter のインターフェイスに引き継がせるようにしようとしています。ユーザーは資格情報を使用してサインインできます。サインインすると、URL パラメーターのテキストがツイート ボックスに表示されます。

うまくいきません。http://twitter.com/intent/...の代わりに使用するとhttps://twitter.com/intent/...、ChildBrowser はサインイン画面を表示しますが、ユーザーが資格情報を送信するとすぐに画面が白くなります。これは、Twitter が HTTPS に切り替わったためだと思われます。

window.openの代わりに単純なものを試してみて、これが事実であることを確認しましたwindow.plugins.childBrowser.showWebPage。Android のネイティブ ブラウザを使用する場合、HTTP/HTTPS で問題はありません。しかし、ネイティブ ブラウザから、検証されていないセキュリティ証明書を受け入れるように求められます。これは ChildBrowser に問題があると思われます。そのプロンプトを処理する方法がわかりません。

ネイティブ ブラウザーのポップオーバーを使用することはできません。ユーザーは「ツイート」や「フォロー」などを押した後にプロセスを終了できる必要がありますが、Android デバイスの「戻る」ボタンは履歴を 1 つ移動するだけです。彼らの意図のために POST アクションに戻ります。次に、元の状態に戻すのではなく、アプリを最初から再起動します。

ChildBrowser で Web インテントを実行できるように、ChildBrowser / 私の Android Phonegap アプリケーションを設定して Twitter の SSL の問題をオーバーライドするにはどうすればよいですか?

関連するコードは次のとおりです。

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 に答える