Javascript 谷歌oauth与angularjs
我正在尝试用angularjs实现GoogleOAuth。下面是创建Google登录按钮的代码,以及用于该按钮的回调函数Javascript 谷歌oauth与angularjs,javascript,angularjs,oauth-2.0,google-oauth,Javascript,Angularjs,Oauth 2.0,Google Oauth,我正在尝试用angularjs实现GoogleOAuth。下面是创建Google登录按钮的代码,以及用于该按钮的回调函数 // Google sign in intialization function <script type="text/javascript"> a = function() { var po = document.createElement('script'); po.type = 'text/javascript'; po.async
// Google sign in intialization function
<script type="text/javascript">
a = function() {
var po = document.createElement('script'); po.type = 'text/javascript'; po.async = true;
po.src = 'https://apis.google.com/js/client:plusone.js';
var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(po, s);
};
</script>
// Callback function after signin
<script type="text/javascript">
var access_token = ''
function signinCallback(authResult) {
console.log(authResult)
if (authResult['status']['signed_in']) {
access_token = authResult['access_token']
if (window.location.pathname != "/album")
window.location = "/#/albums";
document.getElementById('signinButton').setAttribute('style', 'display: none');
} else {
console.log('Sign-in state: ' + authResult['error']);
}
}
</script>
问题是,当Google返回我时,access token angular服务使用nil access_token自动执行。我怎样才能解决这个问题。我还想知道我的整个方法是否有缺陷 没有简单的答案。您需要处理您的身份验证在Angular初始化之前成功的可能性,而且更可能是相反的情况 你可以采取几种方法。有一点需要考虑的是,如果你试图调用一个没有访问令牌的谷歌API,你会得到401的错误。401也可能在令牌过期一小时后自然发生。因此,无论如何,您都需要为401响应编写代码,这样您就可以在令牌准备就绪之前使用相同的逻辑来处理AngularJS初始化。要注意的一个问题是不要多次调用auth 有人希望Google中有人正在为JS库创建一个AngularJS友好的包装器
picasaServices.factory('Phone', ['$resource',
function($resource){
return $resource('https://picasaweb.google.com/data/feed/api/user/default', {}, {
query: {method: 'GET', params:{alt: 'json', access_token: access_token}, isArray: false}
});
}
]);