代码403:“该请求缺少有效的API密钥。” PERMISSION_DENIED服务帐户密钥Google Cloud Vision PHP

时间:2019-04-02 01:49:42

标签: php codeigniter google-api google-cloud-platform google-cloud-vision

我想使用服务密钥通过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

谢谢

2 个答案:

答案 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'替换为实际文件的路径...就找不到类似的文件。