使用AngularJS进行Dialogflow API v2身份验证的身份验证

时间:2019-07-12 17:40:04

标签: angularjs dialogflow

我正在尝试使用AngularJS应用程序访问Google Dialogflow API版本2上的聊天机器人。

我已经下载了服务密钥,在本地设置了环境变量,并按照以下所示的过程在我的系统上下载了google sdk: https://dialogflow.com/docs/reference/v2-auth-setup

但是,在运行代码时出现错误:

{
  "error": {
    "code": 401,
    "message": "Request is missing required authentication credential. Expected OAuth 2 access token, login cookie or other valid authentication credential. See https://developers.google.com/identity/sign-in/web/devconsole-project.",
    "status": "UNAUTHENTICATED"
  }
}

我不知道该怎么做才能使它正常工作...

//方法类型和url变量

$scope.method = 'POST';
$scope.endPoint = 'https://dialogflow.googleapis.com/v2beta1/projects/project-name/agent/intents';
$scope.mimeType = 'application/json; charset=utf-8';


// the function that mkes the http call
function abc() {
    $http({
        method: $scope.method,
        url: $scope.endPoint,
        contentType: $scope.mimeType,
        dataType: "json",
        headers: {
            "Authorization": "Bearer $(gcloud auth application-default print-access-token)"
        },
        data: JSON.stringify({query: message, lang: "en", sessionId: "123"})
    }).then(function success(response) {...}

}

我希望这有助于验证用户身份并提供对意图的访问,然后响应请求。但这不会发生。有人可以告诉我我要去哪里了吗?

此外,我想知道是否将其推送到生产环境中,密钥将在哪里上传,应用程序将如何指向它?

谢谢!

1 个答案:

答案 0 :(得分:0)

以此为参考。希望这会有所帮助。

这是我的工作代码。

AngularJS文件:

$scope.products = [];
$scope.confirmDelete = false;

// Input TextBox Variables.
$scope.productForm = {
    productId: -1,
    productName: "",
    productAddress: "",
    productOwner: ""
};


// For POST and PUT: Submit Button.
$scope.submitProduct = function () {

    var method = "";
    var url = "";
    if ($scope.productForm.productId == -1) {
        method = "POST";
        url = '/products/addProduct';
    } else {
        method = "PUT";
        url = '/products/updateProduct';
    }

    $http({
        method: method,
        url: url,
        data: angular.toJson($scope.productForm),
        headers: {
            'Content-Type': 'application/json'
        }
    }).then(_success, _error);
};

// Success Function
function _success(response) {
    _refreshProductData();
    _clearFormData();
};

// Error Function
function _error(response) {
    console.log("Error : " + response.statusText + ":" + response.data);
};

// For GET: To Get All Data.
function _refreshProductData(){
    $http({
        method : "GET",
        url : '/products/getAllProducts'
    }).then(function success(response){// success
        console.log(response)
        $scope.products = response.data
        console.log($scope.products)
    }, function error(response){// Error
        console.log("Error : " + response.status + ":" + response.data);
    });
}

// Clear Form Data
function _clearFormData() {
    $scope.productForm.productId = -1;
    $scope.productForm.productName = "";
    $scope.productForm.productAddress = "";
    $scope.productForm.productOwner = "";
    ...
    ...
    ...
};

HTML文件:

<form ng-submit = "submitProduct()">
    Product Id :<br>
    {{productForm.productId}} <br><br>

    Product Name :<br>
    <input type = "text" ng-model = "productForm.productName"/> <br><br>

    Product Address :<br>
    <input type = "text" ng-model = "productForm.productAddress" /><br><br>

    Product Owner :<br>
    <input type = "text" ng-model = "productForm.productOwner" /><br><br>

    <input type = "submit" value = "Submit" /><br><br>
</form>