最近在写一个网站的第三方 Windows 客户端,wpf
网站授权用的是 OAuth 授权
一般流程是 登录网站 → 授权 → 回调 → 返回 token
由于这个网站登录必须要验证码,而且验证码机制好像挺复杂,思考了两天没办法用单纯的 http client 来解决
所以就考虑内置一个浏览器了(
现在有几个思路,但都不是很好:
那么有什么更好的方案吗?
1
yexiaoxing 2019-02-24 22:44:00 +08:00
调用浏览器,并本地监听一个 HTTP 服务(不一定要 80 );授权完成,通过 HTTP 服务反馈给应用?
|
2
janus77 2019-02-24 22:51:22 +08:00
就一个授权页,而且一般是一次性使用 几秒钟就跳过去了。当然是考虑兼容性最好的啊
|
3
ysc3839 2019-02-24 23:16:05 +08:00 via Android
1 和 2 可以看作同一个方案。WebBrowser 可以用一些 hack 的方法使用 Edge 的内核。不 hack 的话也可以实现检测操作系统版本然后进行选择。
3 是兼容性最佳的方案,至于体积则是看你能不能接受了,能接受的话推荐这个方案。 4 不如 CEF。 5 的话对用户不太友好,同时兼容性也不好保证。 |
5
MonoLogueChi 2019-02-24 23:27:37 +08:00 via Android
按理说第一个方案可行性是最高的,现在需要操作的只有一个网站,甚至是只有两个页面,确定 IE 兼容就可以了
|
6
orangeade 2019-02-24 23:41:00 +08:00 via Android
我记得 Google Drive 就是本地起个 HTTP
|
7
Tink 2019-02-24 23:41:37 +08:00
调用 chrome
|
8
theks 2019-02-25 01:01:18 +08:00 via Android 2
我觉得你可能想复杂了。
网页中的验证码应该用到了 session 或者 cookie 标识,一般是程序生成一个图片以流的形式直接返回响应,就像网络上的一个静态图片一样。 应该可以用 httpwebclient 或者 httprequest 请求这个二维码地址,把拿到的 cookie(在响应的 header 里,session 也是基于 cookie 的)传递给登录接口,把图片(响应的 content 部分是图片的二进制流)写入到 winform 的 image 控件显示出来。 我四五年没有碰过.net 了,只是提供个思路,不保证你能按我说的实现。 |
9
applehater 2019-02-25 01:25:34 +08:00 via iPhone
wpf 应该有网页控件并且可以拦截 http 请求吧,拦截道授权码就行。登录页面应该简单也不会有多大不兼容。vs 就是 wpf 开发的,可以看看 vs 登录微软账号是怎么做的咯
|
10
Eytoyes 2019-02-25 08:48:35 +08:00
客户端与 Chromium 分离出来,安装好客户端后再去下载 Chromium 解压出来,个人愚见
|
11
micate 2019-02-25 09:42:08 +08:00
|