我想使用服务帐户获取访问令牌,但问题是将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();
答案 0 :(得分: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())
}
}
}
}
您可以从Google Cloud Platform下载
Google Cloud Platform -> 选择您的项目-> IAM和管理员-> 服务帐户 >-> 创建服务帐户
创建服务帐户将打开一个页面,其中有一些详细信息可添加并创建详细信息。
创建服务帐户后,您可以在列表中找到一个已创建的服务帐户。
在右侧,有“操作”列,每个列有三个点。因此,有一个选项创建密钥。当您单击它时,它将打开一个对话框,其中包含两个选项 JSON 和 P12 。当您选择 JSON 并单击创建时,它将下载您的服务帐户的JSON文件。
您可以将此JSON文件用于您的Android项目,并将其放入assets
文件夹中。
您的项目-> 应用-> src -> 主要-> 资产 < / p>
您可以使用上述功能获取访问令牌。