【问题标题】:How to properly authenticate the Flutter GoogleAPIs package for AdMob如何正确验证 AdMob 的 Flutter GoogleAPIs 包
【发布时间】:2021-09-04 03:23:23
【问题描述】:

我已经下载了使用 Flutter googleapis 包的示例,其中显示了 PeopleAPI 的使用情况,this example

我在谷歌云平台上配置了我的项目,并做了一切必要的事情来使示例工作,它确实做到了。

然后我继续尝试使该项目与 YoutubeAPI (v3) 一起工作。我将范围添加到 OAuth 同意屏幕(在 google 云平台上)以及我的代码内部。

final GoogleSignIn _googleSignIn = GoogleSignIn(
  scopes: <String>[
    PeopleServiceApi.contactsReadonlyScope,
    YouTubeApi.youtubeReadonlyScope,
  ],
);

效果很好,我能够有效地使用 YouTube API

我现在想使用 AdmobAPI (v1)。我在 OAuth 同意屏幕(在 google 云平台上)以及我的代码中添加了必要的范围。

final GoogleSignIn _googleSignIn = GoogleSignIn(
  scopes: <String>[
    PeopleServiceApi.contactsReadonlyScope,
    YouTubeApi.youtubeReadonlyScope,
    AdMobApi.admobReadonlyScope,
    AdMobApi.admobReportScope
  ],
);

然后我尝试了 AdmobAPI 的基本示例用法。即使设置过程与 Youtube API 完全相同,这也不起作用。这两个 API 都在谷歌云控制台上启用。

这是 AdmobAPI 输出的错误

[VERBOSE-2:ui_dart_state.cc(199)] Unhandled Exception: DetailedApiRequestError(status: 401, message: Request is missing required authentication credential. Expected OAuth 2 access token, login cookie or other valid authentication credential. See https://developers.google.com/identity/sign-in/web/devconsole-project.)
#0      _validateResponse (package:_discoveryapis_commons/src/api_requester.dart:295:9)
<asynchronous suspension>
#1      ApiRequester.request (package:_discoveryapis_commons/src/api_requester.dart:73:16)
<asynchronous suspension>
#2      AccountsResource.list (package:googleapis/admob/v1.dart:152:23)
<asynchronous suspension>
#3      SignInDemoState._handleGetContact (package:admob_revenue/main.dart:76:11)
<asynchronous suspension>

两个 API 中使用完全相同的经过身份验证的客户端 此应用正在 iOS 模拟器上运行

这是我用来产生此错误的代码: https://pastebin.com/3uw4EtMS 请参阅第 62 - 76 行了解我调用 API 的位置

所以基本上我的问题是,我做错了什么让 YouTubeAPI 身份验证工作,而不是 AdMobAPI 身份验证?

我找不到任何文档说这些 API 的身份验证过程会有所不同,除了范围的变化。

【问题讨论】:

    标签: flutter dart mobile google-api admob


    【解决方案1】:

    好吧,伙计们,事实证明,经过数周的尝试解决这个问题,唯一的问题是我自己的愚蠢。

    为了测试这个程序,我登录了一个没有设置 admob 帐户的 Gmail 帐户。您需要做的就是转到 admob 并使用您要使用的电子邮件设置您的帐户。然后一切都按预期进行。

    对于所有未来的白痴,不要犯和我一样的错误。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-03-15
      • 1970-01-01
      • 2020-08-15
      • 1970-01-01
      • 2019-03-16
      • 1970-01-01
      • 2017-03-06
      • 1970-01-01
      相关资源
      最近更新 更多