- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在使用 Google Sheet API (V4)。
我的 Google 帐户类似于“test@google.com”。为了使用 google api,我在 Google 控制台中创建了一个项目并创建了服务帐户。
我想创建一个只有授权人员和创建该表格的我自己才能访问的 Google 表格。授权人可以阅读和编辑。我也不。
但每当我厌倦我的代码时,它运行良好,我可以获得工作表 url。但是当我点击他们显示的网址时,我需要一个许可。 这是我创建的 url [ https://docs.google.com/spreadsheets/d/1RKR-ErUaC_LujUUDf8o_yIprEz223U1EltJ7zYPo7us/edit]
我认为问题在于我正在使用 OAuth 服务帐户。我需要用这个。
所以.. 我想创建 google 表格并授予我选择的人阅读和编辑的权限。
请帮帮我...!
/**
* Application name.
*/
private static final String APPLICATION_NAME = "Google Sheets API Java";
/**
* Global instance of the JSON factory.
*/
private static final JsonFactory JSON_FACTORY = JacksonFactory.getDefaultInstance();
/**
* Global instance of the HTTP transport.
*/
private static HttpTransport HTTP_TRANSPORT;
/**
* Global instance of the scopes required by this quickstart.
* <p>
* If modifying these scopes, delete your previously saved credentials
* at ~/.credentials/sheets.googleapis.com-java-quickstart
*/
private static final List<String> SCOPES = Arrays.asList(SheetsScopes.SPREADSHEETS);
static {
try {
HTTP_TRANSPORT = GoogleNetHttpTransport.newTrustedTransport();
} catch (Throwable t) {
t.printStackTrace();
System.exit(1);
}
}
/**
* Creates an authorized Credential object.
*
* @return an authorized Credential object.
* @throws IOException
*/
public Credential authorize() throws IOException {
// Load client secrets.
InputStream in = GoogleSheetConfig.class.getResourceAsStream("/My Service Account Information.json");
GoogleCredential credential = GoogleCredential
.fromStream(in)
.createScoped(SCOPES);
return credential;
}
/**
* Build and return an authorized Sheets API client service.
*
* @return an authorized Sheets API client service
* @throws IOException
*/
@Bean
public Sheets getSheetsService() throws Exception {
Credential credential = authorize();
return new Sheets.Builder(HTTP_TRANSPORT, JSON_FACTORY, credential)
.setApplicationName(APPLICATION_NAME)
.build();
}
我的服务帐户信息如下:
{
"type": "service_account",
"project_id": "my project id ",
"private_key_id": "fb925c0954********",
"private_key":
"client_email": "test-service-accoun@admin-auth-
test.iam.gserviceaccount.com",
"client_id": "my client id",
"auth_uri": "https://accounts.google.com/o/oauth2/auth",
"token_uri": "https://accounts.google.com/o/oauth2/token",
"auth_provider_x509_cert_url":
"https://www.googleapis.com/oauth2/v1/certs",
"client_x509_cert_url":
"https://www.googleapis.com/robot/v1/metadata/x509/admin-auth-test-
service-accoun%40admin-auth-test.iam.gserviceaccount.com"
}
下面是我创建工作表的测试代码:
Spreadsheet requestBody = new Spreadsheet();
Sheets.Spreadsheets.Create request = sheets.spreadsheets().create(requestBody);
Spreadsheet response = request.execute();
System.out.println(response);
最佳答案
您是对的,因为您使用的是服务帐户,因此它创建的文件只能由该帐户访问。如本tutorial所述关于服务帐户:
Using a service account to access Google Drive API can be very useful but it is important to remember that a service account is not you. If you want to be able to access the files it uploads you must grant yourself access to them though the service account.
为自己添加对文件的权限:
Permissions: update
或 Permissions: create
我建议您使用 Drive API 创建工作表以在工作表创建中添加权限。然后使用 Sheets API 编辑内容。
希望这对您有所帮助。
关于permissions - 当 Service Account 创建 Google Sheets 时,需要权限。我怎样才能给予许可?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44395567/
我刚刚克隆了 ProductHunt.com 网站,在处理 url 时,我收到了名称错误的错误!当我输入“localhost:8000/accounts/signup”时,它应该带我进入一个 html
我正在将 account.analytic.account 字段从销售订单传递到发票。意图是在确认销售订单时通过该字段。 def _prepare_invoice(self, cr, uid, ord
我有一个奇怪的问题,并不是真正的技术性问题,但我确实希望收集有意义的建议。 我正在构建一个大型 Web 应用程序,基本上是一个照片共享社区站点。作为该站点的一部分,登录用户可以转到他们的个人资料,从中
在 Google Play 开发者控制台中,我在启动前测试中收到警告,其中提到: java.lang.NullPointerException:尝试从字段“java.lang.String andro
我的网站抛出以下异常: IOException: The account used is a computer account. Use your global user account or loc
我在 test 模块下通过 stripe api 在 stripe 中创建了一个帐户。并与该账户绑定(bind)一个银行账户。转到 Stripe dashboard -> connect -> acc
我最近在 Play 商店中更新了我的第一个 android 应用程序,并且发布前报告报告了特定设备上的一个错误。提供的堆栈跟踪如下: FATAL EXCEPTION: main Process: co
我想显示类似的东西: 案例一:“以用户身份登录” @ UserName [ logout ] 这里没有问题,我只是这样做: @ {{ app.user.username}} [ 注销 ] 案例2:“以
为了能够测试 Android Market 许可的任何实现(例如 LVL、应用内结算),Google 建议创建一个 Google Checkout 测试账号 ,因为开发者无法使用自己的 Google
我的公司有一个 Apple 企业帐户,我们用它来为使用 MDM 的员工部署应用程序。工作正常。 我们正在与外部开发人员一起开发一款应用。这个应用程序可能会被放入 App Store。 我大致理解Ent
我有这个方法: @api.multi @api.depends('order_picking', 'order_picking.isbn', 'contract_worksheet', 'state'
我来自以太坊环境,Solana 概念有点令人困惑。我找到了各种指导代码步骤的教程,但并没有真正解释逻辑背后的概念。 我知道在 Solana 中我们有程序,它们不包含数据,只是逻辑 - 网络中的可执行实
我正在编写一个应用程序来访问 Office 365 中用户的数据(电子邮件、联系人、日历)。因此我需要为外部用户启用对我的访问。 我已按照此处的 Microsoft Office 说明 ( http:
我正在构建我的第一个 Meteor 应用程序,在配置accounts-ui/accounts-google 时,系统会提示我将授权重定向 URI 设置为:http://localhost:3000/_
我正在创建一个应该能够读取某个域的所有用户的市场应用程序。我请求访问这些范围: https://www.googleapis.com/auth/userinfo.email https://www.
几天来,我一直在努力显示数据集中表中的数据。当我不在 WHERE 中放置条件时,它会显示完整的表,但只需要表中满足条件的行。如果有更快查看的建议。多谢。 myConnectionString = pw
我正在尝试使用来自 qt c++ 代码的 android AccountManager。要添加帐户,我想创建一个 android.accounts.Account 的实例,我正在尝试使用以下代码执行此
出于某种原因,一小部分 iOS 10 用户无法从我的公共(public) iCloud 容器中读取数据。 CloudKit 返回的 localisedError 是“Account doesn't h
我刚刚开始使用 Stripe API,并且已经遇到了一些我不明白的事情: 我如何确定我自己的 Stripe 帐户的标识符(例如, acct_abcd1234blablabla )? 我在临时 Stri
需要从贷方和借方帐号相同的借方总额中减去贷方总额。如果一个值只存在于借记账号,没有什么可以减去的,只需要得到这个值。 名为 18_7_ChartOfAccounts 的表如下所示: ID | Acco
我是一名优秀的程序员,十分优秀!