Anonymous
Получил сообщение «У вызывающего абонента нет разрешения [403]», когда мы вызываем API-интерфейс приложений.
Сообщение
Anonymous » 02 янв 2026, 21:56
Привет всем, я работаю над API-интерфейсом Google Apps-Script.
Код: Выделить всё
import 'package:flutter/material.dart';
import 'package:googleapis/script/v1.dart';
import 'package:googleapis_auth/auth_io.dart';
class ApiTest extends StatefulWidget {
@override
_ApiTestState createState() => _ApiTestState();
}
class _ApiTestState extends State {
var accountCredentials = new ServiceAccountCredentials.fromJson({
"type": "service_account",
"project_id": "xxxxxxxxx",
"private_key_id": "xxxxxxxxxxxxxxx",
"private_key":
"-----BEGIN PRIVATE KEY-----\nMIIExxxxxxxxxxxxxxxxDJlUBIRuMwo=\n-----END PRIVATE KEY-----\n",
"client_email": "xxxxxxx@yyyyyy.iam.gserviceaccount.com",
"client_id": "0000000000000",
"auth_uri": "https://accounts.google.com/o/oauth2/auth",
"token_uri": "https://oauth2.googleapis.com/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/xxxxxxx%40yyyyyy.iam.gserviceaccount.com"
});
List scopes = [
"https://www.googleapis.com/auth/documents.currentonly",
"https://www.googleapis.com/auth/script.scriptapp",
"https://www.googleapis.com/auth/script.storage",
"https://www.googleapis.com/auth/drive.readonly",
"https://www.googleapis.com/auth/script.external_request",
"https://www.googleapis.com/auth/script.send_mail",
"https://www.googleapis.com/auth/spreadsheets",
"https://www.googleapis.com/auth/sqlservice"
];
@override
void initState() {
super.initState();
main();
}
@override
Widget build(BuildContext context) {
return Scaffold(
body: Container(
color: Colors.white,
child: Center(child: Text("Hello Worlds")),
),
);
}
void main() {
clientViaServiceAccount(accountCredentials, scopes).then((http_client) {
var service = new ScriptApi(http_client);
ExecutionRequest request = new ExecutionRequest();
request.function = "projectSummary";
service.scripts.run(
request, "1C9zxs82nICdyH_O8BMIU9vLpFLmDIZmzw5-3HVnJRvusrr8zMa8nIKXV");
});
}
}
Я выполнил.
Разверните проект сценария как исполняемый файл API.
Предоставьте для выполнения токен OAuth с правильной областью действия.
Убедитесь, что сценарий и вызывающее приложение используют общую облачную платформу (GCP)
проект.
Включить Google Apps Script API
Области, используемые в проекте
Я получил ответ: -
статус: 403, сообщение: у вызывающего абонента нет разрешения
Пожалуйста, объясните мне, почему я получил эту ошибку.
Подробнее здесь:
https://stackoverflow.com/questions/622 ... script-api
1767380183
Anonymous
Привет всем, я работаю над API-интерфейсом Google Apps-Script. [code]import 'package:flutter/material.dart'; import 'package:googleapis/script/v1.dart'; import 'package:googleapis_auth/auth_io.dart'; class ApiTest extends StatefulWidget { @override _ApiTestState createState() => _ApiTestState(); } class _ApiTestState extends State { var accountCredentials = new ServiceAccountCredentials.fromJson({ "type": "service_account", "project_id": "xxxxxxxxx", "private_key_id": "xxxxxxxxxxxxxxx", "private_key": "-----BEGIN PRIVATE KEY-----\nMIIExxxxxxxxxxxxxxxxDJlUBIRuMwo=\n-----END PRIVATE KEY-----\n", "client_email": "xxxxxxx@yyyyyy.iam.gserviceaccount.com", "client_id": "0000000000000", "auth_uri": "https://accounts.google.com/o/oauth2/auth", "token_uri": "https://oauth2.googleapis.com/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/xxxxxxx%40yyyyyy.iam.gserviceaccount.com" }); List scopes = [ "https://www.googleapis.com/auth/documents.currentonly", "https://www.googleapis.com/auth/script.scriptapp", "https://www.googleapis.com/auth/script.storage", "https://www.googleapis.com/auth/drive.readonly", "https://www.googleapis.com/auth/script.external_request", "https://www.googleapis.com/auth/script.send_mail", "https://www.googleapis.com/auth/spreadsheets", "https://www.googleapis.com/auth/sqlservice" ]; @override void initState() { super.initState(); main(); } @override Widget build(BuildContext context) { return Scaffold( body: Container( color: Colors.white, child: Center(child: Text("Hello Worlds")), ), ); } void main() { clientViaServiceAccount(accountCredentials, scopes).then((http_client) { var service = new ScriptApi(http_client); ExecutionRequest request = new ExecutionRequest(); request.function = "projectSummary"; service.scripts.run( request, "1C9zxs82nICdyH_O8BMIU9vLpFLmDIZmzw5-3HVnJRvusrr8zMa8nIKXV"); }); } } [/code] Я выполнил. [list] [*][b]Разверните проект сценария как исполняемый файл API.[/b] [*][b]Предоставьте для выполнения токен OAuth с правильной областью действия.[/b] [*][b]Убедитесь, что сценарий и вызывающее приложение используют общую облачную платформу (GCP) проект.[/b] [*][b]Включить Google Apps Script API[/b] [/list] [b]Области, используемые в проекте[/b] [img]https://i.sstatic.net/Knvvq.png[/img] Я получил ответ: - [b]статус: 403, сообщение: у вызывающего абонента нет разрешения[/b] Пожалуйста, объясните мне, почему я получил эту ошибку. Подробнее здесь: [url]https://stackoverflow.com/questions/62285643/got-the-caller-does-not-have-permission-403-when-we-call-apps-script-api[/url]