大家好,我是 Web 开发新手,我使用 Bootstrap、Angular Js 创建了一个简单的单页面应用程序。我使用 Oauth 2.0 进行 Google+ 登录身份验证,并使用 Google 应用引擎作为后端。问题是当我从登录页面登录并路由到不同的 HTML 页面时,它工作得很好,但是当我在特定网页中并尝试重新加载页面时,oauth 身份验证丢失,我的 google+ User 对象返回 null在端点中。我的 Index.html 页面如下所示
<script>
/**
* Initializes the Google API JavaScript client. Bootstrap the angular module after loading the Google libraries
* so that Google JavaScript library ready in the angular modules.
*/
function init() {
gapi.client.load('mygaeendpoint', 'v1', null, '//'+
window.location.host'/_ah/api');
gapi.client.load('oauth2', 'v2', function () {
angular.bootstrap(document, ['myangularApp']); });
};
</script>
<script src="//apis.google.com/js/client:plusone.js?onload=init"></script>
</head>
<body ng-controller="RootCtrl" ng-init="initSignInButton()">
<ng-view></ng-view>
因此,当我重新加载页面时,它会重新初始化 oauth,并且我的所有 token 都会丢失并将我重定向到登录页面。我不知道我犯了什么错误。请帮我解决这个问题。
最佳答案
希望这对某人有帮助,我在 Angular JS 中使用 session 存储来存储我的 access_token,并尝试在刷新页面时检索相同的内容,但是当我为gapi.client API 设置 token 时出现语法问题。以下是存储和检索的示例代码。
//保存access_token
sessionStorage.setItem( "accesstoken",gapi.auth .getToken().access_token);
检索并设置回来
var persistedval = sessionStorage
.getItem("accesstoken");
if (persistedval) {
gapi.auth.setToken({access_token :persistedval});
console.log(gapi.auth.getToken().access_token);
oauth2Provider.signedIn = true;
}
主要是注意setToken的语法。谢谢
关于javascript - 使用 Angular Js、Oauth 2.0 和 GAE 作为我的后端和 Bootstrap 刷新页面,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30957413/