0

私は、ユーザーが Adob​​e AIR で写真を撮ったり、グラフィックを追加したりできるタッチスクリーンのフォトブースを構築中です。プロセスの最後に、彼らは自分自身に写真を電子メールで送信し、Facebook で写真を共有し、Twitter で共有することができます。

私はこのチュートリアルを使用しています: http://tv.adobe.com/watch/adc-presents/oauth-in-adobe-air-applications-built-with-flash-or-flex/に oAuth を取得する方法を理解するAIR で作業します。しかし、それは単純なようです。認可リクエスト URL を AIR の iFrame に相当するものにロードするだけです。

注意が必要なのは、現場に物理的なキーボードがないことです。すべてのテキスト入力用に、オンスクリーン キーボードを設計しました。AS3 でオンスクリーン キーボードをプログラミングするのは非常に簡単です。しかし、AIR HTML/Browser ラッパー内のテキスト フィールドにアクセスできないため、入力文字列に手動で文字を追加することはできません...

これに対して実装できる回避策はありますか? 残念ながら、物理キーボードを追加することは問題外です。

4

1 に答える 1

0

これが 5 か月前のものであることは承知していますが、今晩クライアントのために同様の作業を行っていて、あなたの質問に出くわしました。また、システム レベルのオンスクリーン キーボードや物理的な現実世界のキーボードの必要性を省略したいと考えていました。接続されたタッチ スクリーンを介してアプリの完全な制御下で Flash/AIR ベースのキーボードを使用したかっただけです。

これをすべて Flash/AIR で行うハックな方法を思いつきました。これは、任意の oAuth ダイアログで機能します (いくつかの注意事項があります)。今晩、Facebook と Twitter の oAuth パーミッション ページのテストとして機能するようになりました。oAuth ダイアログの表示に StageWebView を使用し、StageWebView の loadUrl メソッドを介して JavaScript を挿入する必要があります。stageWebView を使用して、StageWebView の oauth アクセス許可ページの読み込み時に Complete イベントのリスナーを設定することが最初のステップです。

次のステップは、ロードされて完全なイベントが発生したら、完全なハンドラーで、StageWebView 参照を介して JavaScript をページに直接挿入し、その関数を介して通信を設定し、画面上の AS3 からフィールドを動的に設定します。キーボードまたはその他の機能。たとえば、Twitter の oAuth 許可ページのユーザー名フィールドに入力するには、次のようにします。

webView.loadURL("javascript: form = document.forms[0]; form['username_or_email'].value='your_username';");

これにより、Twitter の oAuth 許可ページのユーザー名フィールドが入力されます。

そのため、関数をページに挿入し、それを ActionScript から呼び出して、仮想オンスクリーン キーボードからキーを押したり、完成した文字列を渡したりして、適切なフィールドに入力することができます。事前に oAuth ページのソース内のフォームとフィールド名を特定するのは、唯一の注意が必要な部分です。これまでのところ、Twitter と Facebook を識別するのは非常に簡単に見えますが、もちろん、いつでも壊れる可能性があります。正規表現を少し使用すると、それらが正しいことを確認するのに役立ちます。ここで見られる唯一の問題は、セキュリティ上の目的でフィールド名が動的に変更される場合ですが、少なくとも twitter と facebook を一目見ただけでは、そうは見えません。他の oAuth ページは、YMMV の場合とそうでない場合があります。

StageWebView を操作するための便利なライブラリがあり、この通信の一部を行うのに役立つ可能性があります。http://code.google.com/p/stagewebviewbridge/wiki/Communication をご覧ください。

いずれにせよ、これが全体的なアプローチであり、StageWebView を利用してから、独自の JavaScript 関数を動的に挿入して、オンスクリーン キーボードからフィールドへの値の受け渡しを処理するか、単純に上記のようなコードをフィールドに直接入力します。これが、似たようなことを試みている人に役立つことを願っています。

私が取り組んでいる展示でユーザーが直接これを行うことを許可する必要があるため、このアプローチを思いついたことを付け加えたいと思いますが、私の個人的な好みは、単にユーザーの電子メールアドレスまたは電話番号を収集することです. 、インタラクティブに電子メールまたは SMS メッセージを自分のデバイスに送信してもらい、より安全かつ確実に共有することができます。もう 1 つの解決策は、QR コードを表示することです。ユーザーはスナップして、より安全に共有することをすばやく解決できます。私はこれらのアプローチを好みますが、公共の場所で自分の資格情報を入力しようとするユーザーには上記の方法でうまくいきます。セッションにタイムアウトがあり、後続のユーザーのユーザー資格情報を適切にログアウトしていることを確認してください。そうしないと、悪いことが起こることが保証されます。

于 2013-01-10T05:34:30.150 に答える