从 Google Admin SDK 中检索并显示来自 Base64 的图像

Retrieve and display image from Base64 from Google Admin SDK

我在 NodeJS 中使用 Google Admin SDK 来获取用户列表。我似乎无法以 public 的方式使用缩略图,所以我获取了他们的使用 ID 并调用了 users.photos.get(NodeJS SDK),在 return 中我获得了网络安全Base64 照片数据和 mime 类型。

我正在想办法让我的图像真正显示出来。我将转到 img 标签并通过 JQuery 将 SRC 属性设置为由以下格式构成的内联 CSS:

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

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

问题是图像总是损坏。我无法弄清楚我是否做错了什么,或者 Google 是否以某种方式给我一些错误数据,或者我需要对字符串进行某种额外的正则表达式处理,因为它在某些 'web-safe' 中格式?

也许我的图像损坏了,但在管理用户(他们是测试用户)时,它们在 Google 管理仪表板中都显示正常。我试过使用 Google Closure Library 的解码功能,但它确实将其解码为奇怪的字符。

最终我只想从 Google 管理目录中获取用户的照片,这样我就可以将它导入另一个系统!

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

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

意思是下载的时候要反过来:

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

这在 here but I remember that you shouldn't replace the padding bits as per comments here 部分有记录。