【问题标题】:How to get access token Using Service Account如何使用服务帐户获取访问令牌
【发布时间】:2020-04-07 06:20:04
【问题描述】:

我想使用服务帐户获取访问令牌,但问题是在哪里放置 json 文件?如何链接它。在文档部分没有适当的指导方针。我需要asynctask 吗?

代码如下:

    HttpTransport HTTP_TRANSPORT = new NetHttpTransport();
    JsonFactory JSON_FACTORY = new JacksonFactory();

    GoogleCredential credential = new GoogleCredential.Builder()
        .setTransport(HTTP_TRANSPORT)
        .setJsonFactory(JSON_FACTORY)
        .setServiceAccountId("")
        .setServiceAccountScopes("https://www.googleapis.com/auth/androidpublisher")
        .setServiceAccountPrivateKeyFromP12File(keyFile) // where to put the json file?
        .build();
      AccessToken accessToken = credentials.refreshAccessToken();

【问题讨论】:

    标签: java android google-api in-app-purchase


    【解决方案1】:

    步骤从服务帐户获取访问令牌。

      class MainActivity : AppCompatActivity() {
              override fun onCreate(savedInstanceState: Bundle?) {
                    super.onCreate(savedInstanceState)
                    setContentView(R.layout.activity_main)
                    authExplicit()
                }
                 fun authExplicit() {
                        CoroutineScope(Dispatchers.Default).launch {
                            try {
                                val credentials =
                                    GoogleCredentials.fromStream(resources.assets.open("studentsamplechatbot-xvgloa.json"))
                                        .createScoped(Collections.singletonList("https://www.googleapis.com/auth/dialogflow"))
                                credentials.refreshIfExpired()
                                val accessToken = credentials.accessToken
                                Log.e("log_data", "Token :" + accessToken.tokenValue)
                                if (accessToken.tokenValue.isNotEmpty()) {
                                    Log.e(
                                        "log_data",
                                        "Got it --> authenticationType :" + credentials.authenticationType
                                    )
                                    AuthToken = "Bearer " + accessToken.tokenValue
                                } else {
                                    Log.e("log_data", "No token")
                                    AuthToken = ""
                                }
                                CoroutineScope(Dispatchers.Main).launch {
                                    initViews()
                                }
                            } catch (e: Exception) {
                                Log.e("log_data", e.toString())
                            }
                        }
                    }
            }
    

    您可以从谷歌云平台下载

    1. Google Cloud Platform -> 选择您的项目 -> IAM & Admin -> 服务帐号 -> 创建服务帐号

    2. 创建服务帐户将打开一个页面,其中包含添加详细信息并创建它的几个详细信息。

    3. 创建服务帐号后,您可以在列表中找到已创建的服务帐号。

    4. 从右侧,有一个动作栏,每个栏有三个点。从那里,有一个选项创建密钥。当您单击它时,它将打开一个对话框,其中包含 JSONP12 两个选项。当您选择 JSON 并单击创建时,它将下载您的服务帐户的 JSON 文件。

    5. 您可以将此 JSON 文件用于您的 Android 项目,并将其放入 assets 文件夹中。 你的项目 -> app -> src -> ma​​in -> assets

    6. 您可以使用上述函数获取访问令牌。

    【讨论】:

      猜你喜欢
      • 2017-10-07
      • 2015-04-29
      • 2016-04-29
      • 1970-01-01
      • 2021-12-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-03
      相关资源
      最近更新 更多