【问题标题】:Which is the best way to make my rails project an AndroidPublisher Client? [closed]使我的 Rails 项目成为 AndroidPublisher 客户端的最佳方法是什么? [关闭]
【发布时间】:2018-07-01 15:42:53
【问题描述】:

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

【问题讨论】:

  • 什么让你困惑?
  • 抱歉@petey 我将此问题标记为 Knowledge DB,因为我要发布快速指南,但 StackOverflow 不允许我发布答案,导致代码格式错误。

标签: android ruby-on-rails ruby google-cloud-platform


【解决方案1】:

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

当您创建项目时,Play Console 会将您的项目与 Google Developers Console 中的新项目相关联(Google Play 和 Google Developers Consoles 不同,Play 是在 Play Store 中管理您的应用,而 Developer 是管理应用程序和服务您正在 Google Cloud 中运行),因此请确保您的 Play 控制台已链接到 Google Cloud 中的项目,该项目在您的 Google Play 控制台仪表板中访问 -> 设置(开发者帐户)-> API 访问 -> 链接项目

检查 Linked Project 部分 a,如果按钮显示 UNLINK,则表示 Google Play Android Developer 已准备就绪。 如果您想从控制台管理您的 Google Cloud 项目(对于测试实时通知,您需要此步骤)在您的计算机上安装 gcloud https://cloud.google.com/sdk/downloads

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

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

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

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

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

综上所述,您可以使用这样的代码从 Play 管理中心提取数据

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

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

gem 'google-API-client', '~> 0.9'

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

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

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

完成指南后,如果出现类似

的错误
ERROR: (gcloud.beta.pubsub.subscriptions.pull) 
NOT_FOUND: Resource not found (resource=realtime-subs).

可能您在控制台上的 gcloud 配置在不同的项目中运行,所以只能使用

> gcloud init 

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

然后继续下一个教程以分配权限并将您的 Android 应用通知与 SUB/PUB 订阅相关联。 https://developer.android.com/google/play/billing/realtime_developer_notifications.html

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

> gcloud beta pubsub subscriptions pull <subscription-name>

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

现在您需要创建一个 SUB/PUB 订阅,它将所有接收主题的通知推送到您的 rails 应用程序中的 callback end-point

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

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

之后,转到https://console.cloud.google.com/cloudpubsub/ 并创建一个新的订阅,其传递类型为推送到端点 URL,并在域中使用 https 设置回调 URL(即使您尚未在域中设置 https可以,但如果您在生产环境中,请避免这种做法,请在您的域中设置 SSL)

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

client sample in Sinatra 可用作 ruby​​ 客户端的示例。

【讨论】:

    猜你喜欢
    • 2017-05-09
    • 2010-09-20
    • 1970-01-01
    • 1970-01-01
    • 2015-04-17
    • 1970-01-01
    • 2018-09-05
    • 1970-01-01
    相关资源
    最近更新 更多