使我的 Rails 项目成为 AndroidPublisher 客户端的最佳方式是什么?

Eve*_*nce 1 ruby android ruby-on-rails google-cloud-platform

我需要在我的 CRM(Rails 中)中查看我的 Android 应用程序的销售统计数据,有些人建议我使用 Google API,但我\xe2\x80\x99m 对所有文档感到困惑。让我的 CRM 成为 Android 客户端的最佳方式是什么?

\n

Eve*_*nce 5

1. 将您的应用上传到 Google Play 管理中心\n如果您尚未\xe2\x80\x99 将应用上传到 Play 商店,您可以按照下一个指南进行操作。https://support.google.com/googleplay/android-developer/answer/113469?hl=en

\n\n

当您创建项目时,Play Console 将您的项目与 Google Developers Console 中的新项目链接起来(Google Play 和 Google Developers Console 是不同的,Play 是管理 Play 商店中的应用程序,而 Developer 是管理您正在使用的应用程序和服务)在 Google Cloud 中运行),因此只需确保您的 Play 管理中心已链接到 Google Cloud 中的项目,请访问您的 Google Play 管理中心仪表板 -> 设置(开发者帐户) -> API 访问 -> 链接的项目

\n\n

在此输入图像描述

\n\n

在此输入图像描述

\n\n

检查“链接项目”部分 a,如果按钮显示“取消链接”,则表示 Google Play Android Developer\xe2\x80\x99 已准备就绪。\n如果您想从控制台开始管理您的 Google Cloud 项目(对于测试实时通知,您需要执行此步骤)在计算机上安装 gcloud https://cloud.google.com/sdk/downloads

\n\n

2. 创建用户并授予对 Rails 项目的权限\n要授予对 Rails 应用程序的访问权限,您可以创建一个服务帐户凭据,该凭据是您需要在应用程序中设置的 JSON 文件,因此每次您需要使用 Google API 时通过服务帐户,您可以创建一个令牌,使您可以访问 Google Play 中存储的数据。该令牌每 60 分钟就会过期,因此您可以使用 cron 每 1 小时自动恢复一次,或者创建一个方法来在每次需要访问 Google API 并且令牌已过期时恢复它。(在示例中,客户端正在使用第二个选项)

\n\n

在创建任何凭据之前,请检查所选的云项目是否是您需要凭据的项目,您可以在顶部栏中检查它,旁边的 Google 徽标是下拉列表,以选择您想要工作的项目。

\n\n

在此输入图像描述

\n\n

确认您的项目,按照以下指南创建您的服务帐户: https: //developers.google.com/android/management/service-account

\n\n

在此输入图像描述

\n\n

将 JSON 存储在安全的地方或 Rails 应用程序中,只是如果您使用 git,请不要忘记 gitignore 。

\n\n

然后转到 Google Play 控制台的“服务帐户”部分中的“仪表板”->“设置”->“API 访问”,您将看到一项与您在 Cloud Console 中为服务帐户指定的名称相同的服务,以及一个带有图例的蓝色按钮“ GRANT ACCESS”按它设置您想要授予该服务的权限,如果您第一次创建服务时\xe2\x80\x99s仅授予管理员权限以进行测试,那么如果您知道客户端的限制,您可以更改随时获取服务帐户的权限。

\n\n

完成上述操作后,您可以使用如下代码从 Play Console 提取数据

\n\n
  require \'google/apis/androidpublisher_v2\'\n  Androidpublisher = Google::Apis::AndroidpublisherV2\n  scopes = Androidpublisher::AUTH_ANDROIDPUBLISHER\n  authorization = Google::Auth.get_application_default(scopes)\n  publisher = Google::Apis::AndroidpublisherV2::AndroidPublisherService.new\n  publisher.authorization = authorization\n  publisher.authorization.fetch_access_token!\n  //Using Android Publisher Api get the details of a product of your app.\n  @product_info = publisher.get_in_app_product(params[:package]\n  , params[:sku])\n
Run Code Online (Sandbox Code Playgroud)\n\n

正如您在最后的代码中看到的,要获取产品的数据,您需要从 Google API 获取 AndroidPublisherV2 库,因此您需要将以下内容放入您的 gemfile 中:

\n\n
gem \'google-API-client\', \'~> 0.9\'\n
Run Code Online (Sandbox Code Playgroud)\n\n

您可以在http://www.rubydoc.info/github/google/google-api-ruby-client/Google/Apis/AndroidpublisherV2查看库中可用的方法

\n\n

要了解有关 Google 身份验证的更多信息,您可以访问以下链接:\n https://developers.google.com/identity/protocols/application-default-credentials \n https://github.com/google/google-auth-红宝石库

\n\n

3. 将 Google Sub/Pub 配置为 webhook \n如果您希望在用户使用 InAppBilling 在您的 Android 应用中获取订阅时收到实时通知,您将需要使用 Google Cloud Platform 的 SUB/PUB 服务。\n要开始遵循本指南:https://cloud.google.com/pubsub/docs/quickstart-console

\n\n

完成本指南后,如果您遇到类似错误

\n\n
ERROR: (gcloud.beta.pubsub.subscriptions.pull) \nNOT_FOUND: Resource not found (resource=realtime-subs).\n
Run Code Online (Sandbox Code Playgroud)\n\n

可能您在控制台的 gcloud 配置正在不同的项目中运行,因此仅使用

\n\n
> gcloud init \n
Run Code Online (Sandbox Code Playgroud)\n\n

并设置默认为您创建 SUB/PUB 的项目。

\n\n

然后继续学习下一个教程,分配权限并将您的 Android 应用通知与 SUB/PUB 订阅链接起来。\n https://developer.android.com/google/play/billing/realtime_developer_notifications.html

\n\n

要在控制台中提取测试通知,您可以在控制台中键入以下内容:

\n\n
> gcloud beta pubsub subscriptions pull <subscription-name>\n
Run Code Online (Sandbox Code Playgroud)\n\n

您将使用“packageName”值来识别Android 的通知。

\n\n

现在您需要创建一个 SUB/PUB 订阅,它将接收主题的所有通知推送到Rails 应用程序中的回调端点。

\n\n

首先,您将在回调中使用的域名需要在 Google Domains 中注册,以确保您是该域名的所有者。访问https://console.cloud.google.com/apis/credentials/domainverification \n并选择“添加域”选项卡,只需按照该过程显示的步骤操作即可。

\n\n

在此输入图像描述

\n\n

如果您的 Rails 应用程序位于 localhost 中,您可以使用ngrok分配 URL,只需考虑每次重新启动 ngrok 时 URL 都会发生变化,并且您需要对新 URL 进行域验证。

\n\n

之后,转到https://console.cloud.google.com/cloudpubsub/并创建一个新的订阅,其交付类型为推送到端点 URL,并在域中使用 https 设置回调 URL(即使您没有\ xe2\x80\x99t 在您的域中设置 https 它将起作用,但如果您在生产中,请避免这种做法,请在您的域中设置 SSL)

\n\n

在此输入图像描述

\n\n

在此输入图像描述

\n\n

现在,您的 Rails 应用程序将收到您的应用程序发送到 Google Cloud Platform 中的主题的每条通知。

\n\n

Sinatra 中的客户端示例可作为 ruby​​ 客户端的示例。

\n