14

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

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

4

2 回答 2

25

由于您自己与服务帐户共享打印机,我们可以假设您知道服务帐户被邀请到的打印机的“打印机 ID”。

让服务帐户/processinvite使用以下(强制)参数调用请求:

  • printerid=已知打印机 ID
  • accept=true

之后,打印机将出现在/search

印刷愉快!

于 2016-04-01T21:27:21.930 回答
17

我相信您遇到了“待处理”问题。
也就是说,您确实与id@developer.gserviceaccount.com帐户共享了您的打印机,但其他用户(在本例中为id@developer.gserviceaccount.com)必须接受共享打印机的邀请。

您可以通过发出/print请求来检查这一点,您将看到一个

“is_pending”:真

在这种情况下access,您的用户 ( id@developer.gserviceaccount.com ) 部分中的元素。

不用说,将此元素设置为 true 的帐户无法打印 - 因此“用户未获得授权”。信息。
我知道无法接受给定服务帐户的邀请,但是有一种解决方法:

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

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

可以在此处找到有关如何创建组的更多信息。
我已经使用 GAE 服务帐户进行了尝试,并且可以正常工作。如果您需要任何澄清,请不要犹豫。祝你好运。

于 2013-11-13T10:57:38.333 回答