与 Google API 服务帐户共享打印机
Posted
技术标签:
【中文标题】与 Google API 服务帐户共享打印机【英文标题】:Share printer with Google API Service Account 【发布时间】:2013-11-15 01:45:43 【问题描述】:是否可以与 Google API 服务帐户 (https://developers.google.com/accounts/docs/OAuth2ServiceAccount) 共享 GCP 打印机?
我尝试与客户电子邮件地址 (id@developer.gserviceaccount.com) 共享打印机,但在对 API 调用 /search
的响应中未显示打印机。
调用 /submit
会导致错误(用户无权访问)
【问题讨论】:
【参考方案1】:由于您自己与服务帐户共享打印机,我们可以假设您知道服务帐户被邀请到的打印机的“打印机 ID”。
让服务帐户调用/processinvite
请求,并使用这些(强制)参数:
printerid
= the-known-printer-id
accept
= true
之后,打印机会出现在/search
祝打印愉快!
【讨论】:
这行得通,您的答案是网络上唯一“记录在案”的地方。 可以确认——这非常有效! 1) 在云打印仪表板中,与服务帐户共享打印机。 2) 让服务帐户 POST/processinvite
-- 获取打印机 ID 的最简单方法是从仪表板页面的 URL (https://www.google.com/cloudprint#printers/<printer-id>
) 复制它
我将此命令添加到库中,其中包含github.com/io7/GoogleCloudPrint的过程示例代码
谢谢。我什至无法想象你是如何找到这个无证技巧的。
我正准备把头发扯掉,直到找到这个答案。痛了3天。天哪!【参考方案2】:
我相信您遇到了“待处理”问题。 也就是说,您确实与 id@developer.gserviceaccount.com 帐户共享了您的打印机,但其他用户(在本例中为 id@developer.gserviceaccount.com)必须接受共享打印机的邀请。
您可以通过发出/print
请求来检查这一点,您将看到一个
“is_pending”:真
在这种情况下,您的用户 (id@developer.gserviceaccount.com) 的 access
部分中的元素。
不用说,将此元素设置为 true 的帐户无法打印 - 因此“用户未获得授权”。留言。 我知道无法接受给定服务帐户的邀请,但是有一种解决方法:
-
您可以使用可以接受共享打印机的帐户(例如您的 gmail 帐户)创建私人 google 群组。
然后将服务帐户 ("id@developer.gserviceaccount.com") 添加到组中,等等。您可以使用服务帐户进行打印;)。
当您共享打印机时,您必须与 google 群组共享(使用群组的电子邮件地址,您可以在群组管理控制台的某个位置找到该地址)并且群组管理员(例如您的 gmail 帐户)必须接受整个邀请团体。
更多关于如何创建群组的信息可以在here找到。 我已经使用 GAE 服务帐户进行了尝试,并且可以正常工作。如果您需要任何澄清,请随时询问。祝你好运。
【讨论】:
你绝对是个天才。以上是关于与 Google API 服务帐户共享打印机的主要内容,如果未能解决你的问题,请参考以下文章
如何更改 google API“服务帐户”名称/电子邮件地址
如何使用谷歌API在内部/自定义编辑器中打开和编辑共享谷歌文档?
C# 从 Google 共享驱动器 API v.3 中删除文件
Google OAuth 2.0 服务帐户 - 日历 API(PHP 客户端)