【问题标题】:ClientException "failed to parse header value" when using Googleapis_auth package with flutter使用带有颤振的 Googleapis_auth 包时,ClientException“无法解析标头值”
【发布时间】:2020-09-29 22:20:16
【问题描述】:

我正在尝试开发一个需要调用访问受限的 http 触发云功能的颤振(网络)应用程序。

因此,我在我的谷歌云控制台中创建了一个服务帐户,并按照示例说明如何将经过身份验证的 http 客户端作为 googleapis_auth 包 (https://github.com/dart-lang/googleapis_auth) 的自主应用程序检索。

final accountCredentials = new ServiceAccountCredentials.fromJson(r'''{ "private_key_id": "****", "private_key": "****", "client_email": "****.iam.gserviceaccount.com", "client_id": "****", "type": "service_account" }'''); 
var scopes = [CloudfunctionsApi.CloudPlatformScope]; 
AuthClient client = await clientViaServiceAccount(accountCredentials, scopes);

这似乎工作正常。但是当我尝试使用接收到的客户端向我的云函数发出发布请求时,我得到了一个 ClientException(“无法解析标头值”)。

http.Response resp = await client.post( CloudFunctiontriggerURL, body: {'data': userId});

据我了解示例,这应该可以正常工作,而无需在 POST 函数调用中手动指定任何标题。正确的? 但是,即使我手动指定标题,我也会收到此错误。

对此的任何帮助将不胜感激。

【问题讨论】:

    标签: flutter dart google-cloud-functions service-accounts flutter-web


    【解决方案1】:

    我相信您会收到401 Unauthorized: "Failed to parse header value" 异常。

    为了调用受限的 http Cloud Functions,服务帐户需要cloudfunctions.functions.invoke 权限,该权限可以通过角色roles/cloudfunctions.invoker 授予。请确认。

    https://cloud.google.com/functions/docs/reference/iam/roles

    【讨论】:

    • 感谢您的回复。但是是的,我已将“Cloud Functions-Invoker”角色授予使用的服务帐户。
    • 请参阅编辑。我希望它有所帮助,这就是你的意思。
    • 不,这不是。我的意思不是 Failed to parse header value 旁边的完整错误
    • 好的,抱歉。你能告诉我如何检索所需的信息吗?我以前从未需要过这个,因此我对此仍然很缺乏经验。
    • 我建议您联系 Google Cloud Platform Support,并提供您需要帮助的项目 ID 和云函数名称。 cloud.google.com/support-hub
    猜你喜欢
    • 2019-06-16
    • 2020-01-09
    • 2020-09-03
    • 2019-10-21
    • 2019-04-17
    • 1970-01-01
    • 1970-01-01
    • 2022-01-13
    • 2019-01-17
    相关资源
    最近更新 更多