没有gapi的Cloud Endpoints + AngularJS身份验证

时间:2014-04-01 16:20:49

标签: angularjs google-cloud-endpoints

我在项目中使用角度+云端点,我想通过使用promises(它与云端点js库as written here不兼容)保持角度y。我设法用$ http调用api。

实施例

$http.get("/_ah/api/myapi/v1/mypath").success(function(data){
    //edited for clarity
}).error(function () {
    //edited for clarity
});

效果很好。

但是当我尝试在我的api方法中使用User参数时(我想让我的端点中有用户),我发现自己需要使用OAuth身份验证(因为通常的web.xml安全约束不会使用云端点)。

web.xml(安全约束)

<security-constraint>
    <web-resource-collection>
        <web-resource-name>All</web-resource-name>
        <url-pattern>/*</url-pattern>
    </web-resource-collection>
    <user-data-constraint>
        <transport-guarantee>CONFIDENTIAL</transport-guarantee>
    </user-data-constraint>
    <auth-constraint>
        <role-name>*</role-name>
    </auth-constraint>
</security-constraint>

端点示例(java)

public Person getMyself(User user) throws OAuthRequestException {
    // edited for clarity
    return person;
}

我想知道是否有办法验证使用angular的$ http进行的api调用,还是我真的必须使用google的端点js库(gapi)?

1 个答案:

答案 0 :(得分:1)

您可以按照GCloud BlogGitHub Example

中所述使用登录流程

您将获得访问令牌:

var token = gapi.auth.getToken();

然后您可以按如下方式调用$http函数:

$http({method: 'GET', url: PATH/getMyself, headers: {'Authorization': 'Bearer ' + token}}); 

后端:

public Person getMyself(User user) throws OAuthRequestException {
    // edited for clarity
    return person;
}