以文本方式查看主题 - Foxtable(狐表) (http://foxtable.net/bbs/index.asp) -- 专家坐堂 (http://foxtable.net/bbs/list.asp?boardid=2) ---- [求助]使用百度网盘开放平台如何转换成狐表语言获取 Access_Taken? (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=184740) |
-- 作者:新福星 -- 发布时间:2022/12/27 19:27:00 -- [求助]使用百度网盘开放平台如何转换成狐表语言获取 Access_Taken? 使用百度网盘开放平台,简化模式接入方式获取接入授权。如何转换成狐表语言? 如下图。通过Dim urlstr As String = CExp(url, client_id, display)语句拼接出URLStr,然后将该字串人工拷贝加入到浏览器的地址中。回车后会新生返回一个地址,在这个返回的地址中包含了Access_Taken. 见下图。 现在希望把上述人工操作的过程,转换成狐表语言,如何获取这个返回的Aceess_Taken? 此主题相关图片如下:qq图片20221227191646.png |
-- 作者:有点蓝 -- 发布时间:2022/12/27 20:16:00 -- 没有办法直接获取的,这种需要有一个web服务做回调,然后在回调里接收数据。用法和微信的授权页面一样:http://www.foxtable.com/mobilehelp/topics/0235.htm |
-- 作者:qqzwc -- 发布时间:2022/12/28 13:21:00 -- 你没有说明,其实手工打开那个网址之后,需要先输入用户名和密码登录百度账号(已登录情况下直接点授权),才能获取到accesstoken 其实你点的这一下授权按钮,需要好多步代码操作才能完成 你主要解决的问题是如何使用api方式登录百度,并获取登录成功后的cookie和bdstoken github上搜一下:https://passport.baidu.com/v2/api/?login 获得的代码都是如何登录百度的,比如 https://github.com/rx-ted/Python/blob/main/爬取/baidu/baidu.py 需要有一定的编程知识和网络爬虫知识 (1.访问一个百度产品的网址,获取临时cookie 2.获取百度登录token和rsa公钥 3.使用rsa公钥对百度密码进行加密 4.使用token,百度账号,加密后的百度密码完成登录 5.使用登录成功后的cookie和bdstoken完成百度OAuth授权) 另外,其实你可以转换一下思路,换成设备码授权模式,代码写起来更简单https://pan.baidu.com/union/doc/fl1x114ti 1.先访问https://openapi.baidu.com/oauth/2.0/device/code?response_type=device_code&client_id=您应用的AppKey&scope=basic,netdisk 2.JSON解析qrcode_url字段,展示二维码图片,用户通过手机等智能终端扫描二维码 3.通过 Device Code 轮询换取 Access Token,若超时后退出程序
[此贴子已经被作者于2022/12/28 16:30:20编辑过]
|
-- 作者:新福星 -- 发布时间:2022/12/29 7:32:00 -- @qqzwc 设备码授权模式也进行了测试,还是无法达到我的要求。和百度网盘技术沟通,他们目前没有将用户名密码代入参数,直接返回Access_Token的方式。我是想用狐表做一个数据定时自动备份程序。长期在服务器上运行自动备份。现在是每次启用都要人工登陆一次或者录入一次信息,有人工介入那就直接备份了,还要程序做什?所以因为每次必须人工介入我的想法目前无法实现!
|
-- 作者:qqzwc -- 发布时间:2022/12/29 13:11:00 -- 百度官方的确没有给出直接使用用户名和密码进行登录的api,但这倒不是无解,就是稍微有点繁琐,上面回复你了: github上搜一下:https://passport.baidu.com/v2/api/?login 参照代码思路搬运一下。 再比如搜索baidu oauth passport.baidu.com也行 得到的这个,基本就是完整代码了:https://github.com/qhgz2013/BaiduCloudSync/blob/master/BaiduCloudSync/api/baidu-oauth.cs 不想写这些代码的话,可以跳过百度网盘,使用其他方式备份(FTP或者WebDav),有点答非所问了,上面百度的懒得写到foxtable主要是因为百度登录不开放,一是登录地址和登录方法估计会时不时变化,二是会可能出现要输入验证码的情况,懒得搞了 这是我写的Foxtable示例代码,上传文件到坚果云。免费版每月1GB的上传流量。这个云盘挺不错的,还有增量备份和文件历史记录快照的功能。 国内网盘只有坚果云和诚通网盘支持WebDav,诚通的禁止通过WebDav下载,免费用户网页下载限速,但优点是容量有500GB。 不喜欢可以用国外的网盘,或者自己搭建网盘,比如群辉再开启WebDav Server就行了 \'参考来源:https://github.com/ZZRRegion/JianGuoYunWebDav/blob/master/JianGuoYunWebDav/HttpWebDav.cs \'!!!注意需要添加.Net原生的System.Net.Http.dll外部引用!!! \'坚果云开启WebDav方法:https://help.jianguoyun.com/?p=2064 \'配置坚果云的账号、密码、webdav地址、要上传的文件 Dim UserName As String = "xxx@xxx.com" Dim Password As String = "xxx" \'必须上传到我的坚果云文件夹下,否则会提示404。 Dim BaseUrl As String = "https://dav.jianguoyun.com/dav/我的坚果云/" Dim file As String = "D:\\已检验未入库.xls" \'初始化Http客户端 Dim httpClientHandler As New System.Net.Http.HttpClientHandler() httpClientHandler.UseProxy = True httpClientHandler.Proxy = New System.Net.WebProxy() httpClientHandler.Credentials = New System.Net.NetworkCredential(UserName, Password) httpClientHandler.PreAuthenticate = True Dim httpClient As New System.Net.Http.HttpClient(httpClientHandler) \'读取文件并上传 Dim finfo As New System.IO.FileInfo(file) \'如果已存在同名文件且内容有变化,将会被覆盖并自动保留历史版本。 Dim url As String = BaseUrl + finfo.Name Dim byteArrayContent As New System.Net.Http.ByteArrayContent(System.IO.File.ReadAllBytes(file)) \'发送http请求 Dim clientTask = httpClient.PutAsync(url, byteArrayContent) \'等待请求结果 clientTask.Wait() Dim rep As System.Net.Http.HttpResponseMessage = clientTask.Result If rep.IsSuccessStatusCode Then Output.Show("文件上传成功!") Else Output.Show("文件上传失败:" & rep.StatusCode) End If \'\'创建文件夹 \' Dim fdname As String = "测试文件夹" \' Dim httpRequestMessage As New System.Net.Http.HttpRequestMessage() \' httpRequestMessage.Method = New System.Net.Http.HttpMethod("MKCOL") \' httpRequestMessage.RequestUri = New Uri(BaseUrl + fdname) \' clientTask = httpClient.SendAsync(httpRequestMessage) \' clientTask.Wait() \' If clientTask.Result.IsSuccessStatusCode Then \' Output.Show("文件夹创建成功!") \' Else \' Output.Show("文件夹创建失败:" & clientTask.Result.StatusCode) \' End If \' \'删除文件 \' Dim deleteFile As String = "测试删除文件.btw" \' httpRequestMessage = New System.Net.Http.HttpRequestMessage() \' httpRequestMessage.Method = System.Net.Http.HttpMethod.Delete \' httpRequestMessage.RequestUri = New Uri(BaseUrl + deleteFile) \' clientTask = httpClient.SendAsync(httpRequestMessage) \' clientTask.Wait() \' If clientTask.Result.IsSuccessStatusCode Then \' Output.Show("文件删除成功!") \' Else \' Output.Show("文件删除失败:" & clientTask.Result.StatusCode) \' End If \' \'下载文件 \' Dim downFile As String = "【01】坚果云快速向导.pdf" \' Dim downPath As String = "D:\\" \' url = BaseUrl + downFile \' Dim task = httpClient.GetByteArrayAsync(url) \' task.Wait() \' If task.IsCompleted Then \' System.IO.File.WriteAllBytes(downPath + downFile, task.Result) \' Output.Show("文件下载成功!") \' else \' Output.Show("文件下载失败!") \' End If [此贴子已经被作者于2022/12/31 13:42:59编辑过]
|