Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/187.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在没有gcloud的情况下为Google AutoML Vision API生成Java访问令牌?_Java_Android_Google Cloud Platform_Gcloud_Automl - Fatal编程技术网

如何在没有gcloud的情况下为Google AutoML Vision API生成Java访问令牌?

如何在没有gcloud的情况下为Google AutoML Vision API生成Java访问令牌?,java,android,google-cloud-platform,gcloud,automl,Java,Android,Google Cloud Platform,Gcloud,Automl,我正在制作一个Android应用程序,它将利用Google AutoML Vision API。我正在寻找一种获得永久访问令牌或在代码中生成它们的方法,这样我就不需要每次使用我的应用程序时都使用gcloud。我该怎么做呢 我已经创建了AutoML模型,设置了我的服务帐户,并在androidstudio中编写了我的应用程序,这样它就可以使用Volley向API发出请求。问题是,它们要求您使用gcloud生成并传递访问令牌。我可以生成令牌并将其放入我的代码中,但它只持续一个小时,然后就过期了。RES

我正在制作一个Android应用程序,它将利用Google AutoML Vision API。我正在寻找一种获得永久访问令牌或在代码中生成它们的方法,这样我就不需要每次使用我的应用程序时都使用gcloud。我该怎么做呢

我已经创建了AutoML模型,设置了我的服务帐户,并在androidstudio中编写了我的应用程序,这样它就可以使用Volley向API发出请求。问题是,它们要求您使用gcloud生成并传递访问令牌。我可以生成令牌并将其放入我的代码中,但它只持续一个小时,然后就过期了。RESTAPI需要访问令牌,如下所示

curl -X POST -H "Content-Type: application/json" \
-H "Authorization: Bearer $(gcloud auth application-default print-access- 
token)" 
我研究了解决这个问题的不同方法。例如,有一些用于Java和Google云应用程序的Google客户端库,它们展示了如何将服务帐户凭据添加到代码中。我很困惑,当从手机上运行Json密钥文件时,如何将其添加到代码中。我也读过Firebase可以使用的文章,但我不知道使用的过程是什么

目前,我将在我的计算机上打开gcloud,生成访问令牌,将其粘贴到我的代码中,然后按如下方式运行应用程序,并使用标题,这将返回所需的结果长达一小时,直到访问代码过期

@Override
public Map<String, String> getHeaders() throws AuthFailureError{
    Map<String, String> headers = new HashMap<>();
    headers.put("Authorization", "Bearer " + accesstoken);
    return headers;
 }
  • 将firebase添加到您的android项目中。您将在Firebase中创建一个项目,下载一个json文件进行配置,并将其添加到应用程序目录中。还可以在gradle文件中添加依赖项
  • 在Firebase控制台上,转到ML工具包部分,用您的照片创建AUTML模型
  • 训练模型
  • 培训结束后,您可以下载模型,并在资产/模型目录中下载3个文件。它已经可以使用了。通过这种方式,您将使用Firebase AutoML SDK,并且不需要生成令牌

  • 使用您的模型并根据应用程序进行预测。 步骤如下:

    • 为预测准备图像
    • 准备模型
    • 获取图像标签
    • 对图像进行分类处理

public void findLabelsWithAutoML(){
位图=空;
文件文件=新文件(currentPhotoPath);
System.out.println(“文件”+文件);
试一试{
位图=MediaStore.Images.Media
.getBitmap(getContentResolver(),Uri.fromFile(file));
}捕获(例外e){
e、 printStackTrace();
}
FirebaseVisionImageMetadata=新的FirebaseVisionImageMetadata.Builder()
.setWidth(480)//480x360通常足以
.setHeight(360)//图像识别
.setFormat(FireBaseVisionManageMetadata.IMAGE\u格式\u NV21)
.setRotation(FireBaseVisionManagementData.ROTATION_0)
.build();
FirebaseVisionImage FirebaseVisionImage=FirebaseVisionImage.fromBitmap(位图);
System.out.println(“firebaseVisionImage:+firebaseVisionImage”);
FirebaseAutoMLLocalModel localModel=新的FirebaseAutoMLLocalModel.Builder()
.setAssetFilePath(“model/manifest.json”)
.build();
FirebaseVisionDeviceAutoMLImageLabelProptions LabelProptions=新建FirebaseVisionDeviceAutoMLImageLabelProptions.Builder(localModel)
.setConfidenceThreshold(0.65F)//在Firebase控制台中评估您的模型
//确定适当的值。
.build();
FirebaseVisionImageLabeler FirebaseVisionImageLabeler=null;
试一试{
firebaseVisionImageLabeler=FirebaseVision.getInstance().getOnDeviceAutoMLImageLabeler(labelerOptions);
}捕获(例外e){
e、 printStackTrace();
}
firebaseVisionImageLabeler.processImage(FireBaseVisionImages)
.addOnSuccessListener(新的OnSuccessListener(){
@凌驾
成功时的公共无效(列表标签){
用于(FireBaseVisionImage标签:标签){
System.out.println(“label”+label.getText()+”分数:“+(label.getConfidence()*100));
}
}
})
.addOnFailureListener(新的OnFailureListener(){
@凌驾
public void onFailure(@NonNull异常e){
//
}
});
}
InputStream is = getAssets().open("app.json");
GoogleCredentials credentials = 
GoogleCredentials.fromStream(i).createScoped(Lists.newArrayList(scope));
credentials.refreshIfExpired();
AccessToken accesstoken = credentials.getAccessToken();