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 中完成这一切的 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 码,用户可以快速捕捉并快速解决以更安全地共享 - 我更喜欢这些方法,但上述方法对于愿意在公共场所输入其凭据的用户来说是有用的。确保您在会话中有超时并正确注销后续用户的用户凭据,否则肯定会发生坏事。

于 2013-01-10T05:34:30.150 回答