2014-04-01 98 views
1

我在一个项目中使用角度+云端点,并且我想通过使用promise(它不与云端点js库as written here兼容)保持角度y。我设法通过$ http来调用api。云端点+ AngularJS身份验证没有gapi

$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; 
} 

我想知道是否有验证与角的制作API调用的方式$ http或我真的必须使用谷歌的端点js库(gapi)吗?

回答

1

您可以使用如在GCloud Blog描述的登录流程和GitHub 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; 
}