【问题标题】:Share printer with Google API Service Account与 Google API 服务帐户共享打印机
【发布时间】:2023-03-11 03:10:02
【问题描述】:

是否可以与 Google API 服务帐户 (https://developers.google.com/accounts/docs/OAuth2ServiceAccount) 共享 GCP 打印机?

我尝试与客户电子邮件地址 (id@developer.gserviceaccount.com) 共享打印机,但在对 API 调用 /search 的响应中未显示打印机。 调用 /submit 会导致错误(用户无权访问

【问题讨论】:

    标签: google-cloud-print


    【解决方案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 的帐户无法打印 - 因此“用户未获得授权”。留言。
    我知道无法接受给定服务帐户的邀请,但是有一种解决方法:

    1. 您可以使用可以接受共享打印机的帐户(例如您的 gmail 帐户)创建私人 google 群组。
    2. 然后将服务帐户 ("id@developer.gserviceaccount.com") 添加到组中,等等。您可以使用服务帐户进行打印;)。

    当您共享打印机时,您必须与 google 群组共享(使用群组的电子邮件地址,您可以在群组管理控制台的某个位置找到该地址)并且群组管理员(例如您的 gmail 帐户)必须接受整个邀请团体。

    更多关于如何创建群组的信息可以在here找到。
    我已经使用 GAE 服务帐户进行了尝试,并且可以正常工作。如果您需要任何澄清,请随时询问。祝你好运。

    【讨论】:

    • 你绝对是个天才。
    猜你喜欢
    • 2019-12-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-07-04
    • 1970-01-01
    相关资源
    最近更新 更多