在getMessagesUploadServer返回v2/bulk_upload URL之后,VK API的 photos.saveMessagesPhoto会因为 "photo is undefined" 而失败
当使用社区(组)令牌调用photos.getMessagesUploadServer时,VK现在返回一个新的上传URL,而不是旧的upload.php:
https://pu.vk.com/gu/photo/v2/bulk_upload?token=...
这在API版本无关的情况下都会发生(测试覆盖5.81至 5.199)。
向这个URL上传字段名为file1的文件会成功并返回:
{
"files": {
"file1": {
"sha": "7e3f064a...",
"secret": "-179972...",
"meta": {"height": "1006", "width": "1778"}
}
},
"hash": "bd59a78b...",
"server": "999999",
"request_id": "..."
}
响应中没有photo字段。
调用photos.saveMessagesPhoto以这些值在我尝试的所有组合中都失败:
[100] 指定的参数之一缺失或无效:photo未定义 vk.photos.saveMessagesPhoto(server="999999", photo=???, hash="bd59a78b...")
[121] 无效哈希 vk.photos.saveMessagesPhoto(server="999999", photo=json.dumps(resp['files']), hash="bd59a78b...")
[100] 指定的参数之一缺失或无效:photos_list无效 vk.photos.saveMessagesPhoto(server="999999", photo=resp['request_id'], hash="bd59a78b...")
我尝试过的办法:
- 字段名file1在上传时可用(file0与 photo返回错误码:4606 “Cannot get file from request”)
- API版本5.81到 5.199 —— 对组令牌总是返回v2/bulk_upload
- photos.save和 photos.getUploadServer —— 对组令牌不可用([27] 方法在组认证下不可用)
- docs.getMessagesUploadServer仅接受doc、audio_message、graffiti —— 不支持photos
问题: 是否有任何方法可以使用社区令牌,将通过新的v2/bulk_upload端点上传的照片保存下来?或者是否有一个当前可用的替代方法,用组访问令牌将照片上传到消息?
解决方案
这是VK那边的一个小故障。现在一切又恢复正常,照片按以前的方式上传,upload.php链接也回来了。
站内所有文章版权归属LeftHeroAI导航站,无授权禁止任何主体转载、抄袭、复制内容,亦不得私自架设镜像站点。一经侵权,本站将通过法律途径追责。