我想使用服务密钥通过ImageAnnotator实施Google Cloud Vision。我尝试的是下面的样子:
错误:
消息:{ “错误”:{ “代码”:403, “ message”:“该请求缺少有效的API密钥。”, “状态”:“ PERMISSION_DENIED” } }
尝试使用此代码时:
defined('BASEPATH') OR exit('No direct script access allowed');
use Google\Cloud\Vision\VisionClient;
class Admin_center extends CI_Controller {
function __construct() {
parent::__construct();
include APPPATH . 'third_party/vendor/autoload.php';
}
public function index() {
$this->load->view('index');
}
function upload_ocr_image() {
$img_data = $this->upload->data();
$vision = new VisionClient(['keyfile' => json_decode(file_get_contents(base_url().'assets/google_cloud_vision/credentials.json'), true)]);
$imageRes = fopen($img_data['full_path'], 'r');
$image = $vision->image($imageRes,['Text_Detection']);
$result = $vision->annotate($image);
print_r($result);
}
}
我使用了服务帐户密钥。
为什么我出错:403 Permissin被拒绝并缺少有效的API密钥?
已编辑:
我已经遵循了这个YouTube教程:
https://www.youtube.com/watch?v=K-tpjOT7k-o
https://www.youtube.com/watch?v=PqAXE67fwu8&t=2s
谢谢
答案 0 :(得分:1)
经过5个小时的努力,终于找到了问题所在。
实际上,我上面发布的代码可以正常工作。 我只是输错了数组名称。
所以这行:
$vision = new VisionClient(['keyfile' => json_decode(file_get_contents(base_url().'assets/google_cloud_vision/credentials.json'), true)])
“密钥文件”应为“ keyFile”,而“ F”为大写。
仅此而已。
感谢您的帮助。
答案 1 :(得分:0)
只需将'credentials.json'
替换为实际文件的路径...就找不到类似的文件。