Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/actionscript-3/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Facebook AdobeAIR中用于oAuth身份验证的自定义内置屏幕键盘_Facebook_Actionscript 3_Air_Oauth_On Screen Keyboard - Fatal编程技术网

Facebook AdobeAIR中用于oAuth身份验证的自定义内置屏幕键盘

Facebook AdobeAIR中用于oAuth身份验证的自定义内置屏幕键盘,facebook,actionscript-3,air,oauth,on-screen-keyboard,Facebook,Actionscript 3,Air,Oauth,On Screen Keyboard,我正在建造一个触摸屏照相亭,用户可以在那里用AdobeAIR拍照、添加图形等。在这个过程的最后,他们可以通过电子邮件将照片发送给自己,在Facebook上分享照片,并在Twitter上分享 我正在使用本教程:了解如何让oAuth在空中工作。但这似乎很简单。只需将授权请求URL加载到AIR的iFrame等价物中 棘手的部分是,现场将没有物理键盘。对于所有文本输入,我们设计了一个屏幕键盘。在AS3中编程屏幕键盘非常简单。但是我们无法访问AIR HTML/浏览器包装中的文本字段,因此无法手动向输入字符

我正在建造一个触摸屏照相亭,用户可以在那里用AdobeAIR拍照、添加图形等。在这个过程的最后,他们可以通过电子邮件将照片发送给自己,在Facebook上分享照片,并在Twitter上分享

我正在使用本教程:了解如何让oAuth在空中工作。但这似乎很简单。只需将授权请求URL加载到AIR的iFrame等价物中

棘手的部分是,现场将没有物理键盘。对于所有文本输入,我们设计了一个屏幕键盘。在AS3中编程屏幕键盘非常简单。但是我们无法访问AIR HTML/浏览器包装中的文本字段,因此无法手动向输入字符串添加字符


我们有什么办法可以解决这个问题吗?不幸的是,添加一个物理键盘是不可能的。

我知道这是5个月前的事,但我今天晚上为一个客户做了类似的工作,遇到了你的问题。我还想省去对系统级屏幕键盘或物理现实世界键盘的需求,只是想使用一个基于Flash/AIR的键盘,完全由应用程序通过连接的触摸屏控制

我想出了一种在Flash/AIR中完成这一切的黑客方法,它适用于任何oAuth对话框(有一些警告)。今天晚上,我把它作为Facebook和Twitter oAuth权限页面的测试。它要求您使用StageWebView来显示oAuth对话框,并通过StageWebView的loadUrl方法进行一些JavaScript注入。使用stageWebView,第一步是在stageWebView中加载oauth权限页面时为完整事件设置侦听器

下一步是,一旦加载并触发完整事件,在完整处理程序中,您可以通过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协作,这可能有助于进行一些交流-请看这里:

在任何情况下,这都是总体方法,利用StageWebView,然后动态注入您自己的JavaScript函数来处理从屏幕键盘向字段传递值的问题,或者直接用类似于上述的代码填充字段。希望这能帮助那些试图做类似事情的人


我想补充一点,我提出了这种方法,因为允许用户直接在我正在制作的展品上这样做是一项要求,但我个人的偏好是只需收集用户的电子邮件地址或电话号码,并让交互用户向他们自己的设备发送电子邮件或短信,这样他们就可以更安全地分享。另一个解决方案是显示二维码,用户可以抓拍并快速解析以更安全地共享-我更喜欢这些方法,但上述方法将为愿意在公共场所输入凭据的用户提供帮助。确保会话超时,并正确注销后续用户的用户凭据,否则肯定会发生不好的事情。

我曾经写过一些做了类似事情的JS(不包括AS桥)-如果可以使用输入字段的“type”参数找到密码字段,前面的非隐藏输入字段几乎总是用户名。在通过Obj-C使用JS注入为iOS开发邮件室时使用了该选项。