Tag: xamarin.ios

从移动客户端执行oAuth的“正确”方式

我正在构build一个跨平台的移动应用程序(使用Xamarian工具,MonoTouch / MonoDroid)。 我正在尝试通过身份validation工作stream程,正在陷入绊脚石。 我已经搜遍了一个明确的答案,还没有find它。 这里是我目前的设置的概述。 我有一个build在nodejs中的网站。 我使用passport.js在网站上进行oAuthlogin。 这很好,用户可以使用Twitter或Facebooklogin到我的网站。 现在我想将这个相同的loginfunction扩展到我的移动客户端。 我看到2个选项 将应用程序ID和应用程序密码embedded到移动客户端,并从移动应用程序直接向FB或Twitter发送oAuth调用 通过我现有的nodejs web服务器代理oAuth调用(保留服务器上的密钥) 选项2似乎是首选的方式(因为它避免了在移动应用程序中“运送”秘密)。 我有代理方法主要工作。 我在移动客户端打开一个WebView,并将其指向http://mysever/auth/twitter 这通过我现有的passport.js代码运行,并将移动WebViewredirect到Twitterlogin页面。 用户然后在设备上的twitter网页上input他们的信用。 Twitter然后调用我的oAuthcallbackURL(这是我的nodejs web服务器)。 我的服务器和Twitter处理后面第四次握手获取用户configuration文件信息( 据我所知,这是这种方法的关键,我的服务器和叽叽喳喳处理握手,移动客户端不必做任何事情或通过在这个过程中的任何令牌 ) 这是我的问题 : 这是我的最后一步。 一旦我的服务器上的握手完成,我有我需要在服务器上的用户信息, 需要将其发送回移动客户端应用程序 我无法弄清WebView控件中的任何方式来获取响应对象,并获取cookie或标头值(例如)(对于Android和iOS来说,这似乎是正确的)。 我不认为这是平台特定的。 我想我正在尝试做一些移动平台上的WebView小部件,但是并不支持。 这让我觉得我失去了一些明显的东西。 我唯一想到的是让我的networking服务器将移动客户端浏览器“redirect”到查询string中具有用户信息的假URL。 像myapp:// info?userid = 1234 然后在移动应用程序中,我可以劫持URL加载,并抓住这个url,并获得我需要的数据。 然后,我可以隐藏这个用户信息,closuresWebView控件,并移动到我的移动应用程序中的本地屏幕,并在随后的REST调用中将用户信息作为识别用户的手段用于我的nodejs服务器。 由于多种原因,这是大规模的。 其中最大的一点就是url是通过未encryption的线路发送的,并且所有的数据都是纯文本的。 从Web服务器获取数据返回给移动客户端还有更好的方法吗? 还是我做错了?