我意识到这已经 5 个月大了,但是我今晚正在为一个客户做类似的事情,遇到了你的问题。我还想省略对系统级屏幕键盘或物理现实世界键盘的需求,只是想通过附加的触摸屏在应用程序的控制下使用基于 Flash/AIR 的键盘。
我想出了一个在 Flash/AIR 中完成这一切的 hacky 方法,它适用于任何 oAuth 对话框(有一些警告)。就在今天晚上,我将它作为对 Facebook 和 Twitter oAuth 权限页面的测试。它要求您使用 StageWebView 来显示 oAuth 对话框并通过 StageWebView 的 loadUrl 方法进行一些 JavaScript 注入。使用 stageWebView,第一步是在 StageWebView 中加载 oauth 权限页面时为 Complete 事件设置侦听器。
下一步,一旦加载并触发完整事件,在您的完整处理程序中,您可以通过 StageWebView 引用直接将 javascript 注入页面,然后通过该函数设置通信以从屏幕上的 AS3 动态填充字段键盘或其他功能。例如,要填充 Twitters oAuth 权限页面中的用户名字段,您可以这样做:
webView.loadURL("javascript: form = document.forms[0]; form['username_or_email'].value='your_username';");
这将填充 Twitters oAuth 权限页面中的用户名字段。
因此,您可以在页面中注入一个函数,然后您可以从 ActionScript 调用该函数,以传递来自虚拟屏幕键盘的按键或完整的字符串,以填充正确的字段。这是唯一棘手的部分,提前识别 oAuth 页面源中的表单和字段名称。到目前为止,Twitter 和 Facebook 看起来很容易识别,但当然可能随时中断,一点正则表达式可以帮助确保它们是正确的。除此之外,我在这里看到的唯一问题是字段名称是否出于安全目的而动态更改,但快速浏览一下 twitter 和 facebook,至少它们似乎没有这样做。其他 oAuth 页面可能会也可能不会,YMMV。
有一个使用 StageWebView 的有用库,它可能有助于进行一些此类通信 - 看看这里:http ://code.google.com/p/stagewebviewbridge/wiki/Communication
在任何情况下,这都是总体方法,利用 StageWebView,然后动态注入您自己的 JavaScript 函数来处理从屏幕键盘向字段传递值,或者直接使用与上述类似的代码填充字段。希望这可以帮助任何尝试类似事情的人。
想补充一点,我提出了这种方法,因为它是允许用户直接在我正在处理的展览上执行此操作的要求,但我个人的偏好是简单地收集用户的电子邮件地址或电话号码,并让交互式向他们发送电子邮件或 SMS 消息到他们自己的设备,然后他们可以更安全地轻松共享。另一种解决方案是显示 QR 码,用户可以快速捕捉并快速解决以更安全地共享 - 我更喜欢这些方法,但上述方法对于愿意在公共场所输入其凭据的用户来说是有用的。确保您在会话中有超时并正确注销后续用户的用户凭据,否则肯定会发生坏事。