javascript - 从 Google Admin SDK 检索并显示 Base64 图像

标签 javascript base64 google-admin-sdk

我正在 NodeJS 中使用 Google Admin SDK 来获取用户列表。我似乎无法以公共(public)方式使用缩略图,因此我获取了他们的使用 ID 并调用 users.photos.get (NodeJS SDK),作为返回,我获得了网络安全的 Base64 照片数据和 mime 类型。/p>

我正在尝试弄清楚如何让我的图像真正显示出来。我将转到 img 标签并通过 JQuery 将 SRC 属性设置为由以下格式组成的内联 CSS:

'data:' + photo.mimeType + ';base64,' + photo.photoData

所以结果如下:data:image/gif;base64, longAssString

问题是图像总是损坏。我不知道我是否做错了什么,或者谷歌是否以某种方式给了我一些错误的数据,或者我需要对字符串进行某种额外的正则表达式处理,因为它是某种“网络安全”格式?

也许我的图像已损坏,但在管理用户(他们是测试用户)时,它们在 Google 管理信息中心中都显示良好。我尝试使用 Google Closure Library 的解码功能,但它实际上将其解码为奇怪的字符。

最终我只想从 Google 管理目录中获取用户的照片,以便将其导入到另一个系统中!

最佳答案

上传照片时(我经常这样做),会完成一些额外的网络安全编码(除了 base64Encode 之外)。该编码(上传时)是将正斜杠 / 转换为下划线 _,将加号 + 转换为减号 - 。在代码中,那就是:

encodedPhoto = encodedPhoto.replace(/\//g,'_').replace(/\+/g,'-'); 

这意味着下载时,您应该执行相反的操作:

encodedPhoto = photo.photoData.replace(/_/g,'/').replace(/-/g,'+'); 

这记录在 here 部分中但我记得你不应该根据评论 here 替换填充位.

关于javascript - 从 Google Admin SDK 检索并显示 Base64 图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41126152/

相关文章:

javascript - Angular Material sidenav 指令在 app.component 中不起作用

c# - 是否可以创建一个包含多页 tiff 文件所有帧的 base64 字符串?

java - 将 Base 64 图像解码为位图 Android

java - 使用 Java 访问 Google Directory API

javascript - VueJS service-worker.js 在我的 PWA 中被忽略

javascript - 如何验证http表单数据

JavaScript jq 范围

java - 如何将base64字符串转换为sha256?

google-admin-sdk - 如何找到我的Google Apps帐户的不可变ID?

node.js - 使用 Directory API 获取资源日历