Bra*_*ham 9 oauth xamarin.ios node.js xamarin.android passport.js
我正在构建一个跨平台的移动应用程序(使用Xamarian工具,MonoTouch/MonoDroid).我正在尝试通过身份验证工作流程,并遇到了绊脚石.我已经搜遍了一个明确的答案,但还没有找到它.
以下是我当前设置的概述.
我有一个内置在nodejs的网站.我使用passport.js在网站上进行oAuth登录.这很好用,用户可以使用Twitter或Facebook登录我的网站.
现在我想将这个相同的登录功能扩展到我的移动客户端.
我看到2个选项
将app id和app secret嵌入移动客户端,并通过移动应用程序直接向FB或Twitter发出oAuth调用
代理oAuth通过我现有的nodejs Web服务器调用(保留服务器上的密钥)
选项2似乎是首选方式(因为它避免了在移动应用程序中"运送"秘密).
我的代理方法主要是工作.
http://mysever/auth/twitter这是我的问题:
这是困扰我的最后一步.在我的服务器上完成握手后,我在服务器上获得了所需的用户信息,并需要将其发送回移动客户端应用程序
我无法弄清楚WebView控件中的任何方式来获取响应对象并获取cookie或标头值(例如)(对于Android和iOS来说这似乎是正确的).我不认为它是特定于平台的.我想我正试图做一些移动平台上的WebView小部件不支持的东西.这让我觉得我错过了一些明显的东西.
我唯一想到的是让我的网络服务器将移动客户端浏览器"重定向"到在查询字符串中包含用户信息的虚假URL.像myapp:// info?userid = 1234之类的东西
然后在移动应用程序中,我可以劫持URL加载并获取此URL并获取我需要的数据.然后,我可以存储此userinfo,关闭WebView控件并转到我的移动应用程序中的本机屏幕,并在任何后续REST调用中将userinfo用户命名为我的nodejs服务器,以识别用户.
由于多种原因,这是大规模的kludgy.其中最大的一点是,网址是通过未加密的网络发送的,并且所有数据都是纯文本的.
必须有更好的方法将数据从Web服务器返回到移动客户端?
或者我做错了吗?
对于 iOS 和 Android 而言,为 Xamarin 实现 oauth 的最直接方法是使用Xamarin.Auth。客户端的入门文档位于此处。我认为它应该安全地维护所有内容,您不必担心必须使用节点服务器作为代理。
作为通话的一部分,您需要提供您的应用程序 ID,但我不需要担心太多或任何安全问题。
我知道这与您已经实施的内容背道而驰,但这也许可以帮助简化一些事情。
| 归档时间: |
|
| 查看次数: |
4279 次 |
| 最近记录: |