Adobe AIR中的自定义屏幕键盘,用于oAuth身份验证

时间:2012-08-07 22:18:49

标签: facebook actionscript-3 air oauth on-screen-keyboard

我正在构建一个触摸屏照相平台,用户将在Adobe 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包装器中的文本字段,因此我们无法手动将字符添加到输入字符串...

我们可以为此实施任何解决方法吗?遗憾的是,添加物理键盘是不可能的。

1 个答案:

答案 0 :(得分: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看起来非常简单,但当然可以在任何时候打破,一点regexp可以帮助确保它们是正确的。除了这个问题之外我唯一看到的问题是,为了安全起见,字段名称会动态变化,但是从快速浏览一下twitter和facebook,至少他们似乎没有这样做。其他oAuth页面可能会也可能不会,YMMV。

有一个用于处理StageWebView的有用库,可能有助于进行一些沟通 - 请看一下:http://code.google.com/p/stagewebviewbridge/wiki/Communication

在任何情况下,这是整体方法,利用StageWebView,然后动态注入您自己的JavaScript函数来处理从屏幕键盘传递值到字段,或者直接使用类似于上面的代码填充字段。希望这有助于任何人尝试类似的东西。

想要补充说我想出了这种方法,因为它是/允许用户直接在我正在进行的展览上这样做的要求,但我个人的偏好是简单地收集用户的电子邮件地址,或电话号码,并让互动发送电子邮件或短信到他们自己的设备,然后他们可以更安全,更安全地分享。另一种解决方案是显示QR码,用户可以快速解析并更快地解析以更安全地共享 - 我更喜欢这些方法,但上述方法可以帮助愿意在公共场所输入凭据的用户。确保会话超时,并为后续用户正确注销用户凭据,否则会发生不良后果。