Html Oauth工作不正常-仿真和调试模式-英特尔XDK
我是英特尔xdk和整个编码的新手。我正在开发Oauth2。我使用响应类型作为标记。我能够使用auth令牌生成重定向URI。当我调用附加了auth标记的GoogleAppScript webapp时,它在emulator中工作(有时)。为此,我调用了一个函数,并将webappurl与auth令牌一起传递。然后我使用命令window.open(URL)打开webapp。但是,当“测试”或调试模式以及脚本在重定向uri页面停止时,这不起作用。因此,我知道令牌已生成,但webapp未被调用。请帮我修一下 代码如下:Html Oauth工作不正常-仿真和调试模式-英特尔XDK,html,oauth-2.0,intel-xdk,Html,Oauth 2.0,Intel Xdk,我是英特尔xdk和整个编码的新手。我正在开发Oauth2。我使用响应类型作为标记。我能够使用auth令牌生成重定向URI。当我调用附加了auth标记的GoogleAppScript webapp时,它在emulator中工作(有时)。为此,我调用了一个函数,并将webappurl与auth令牌一起传递。然后我使用命令window.open(URL)打开webapp。但是,当“测试”或调试模式以及脚本在重定向uri页面停止时,这不起作用。因此,我知道令牌已生成,但webapp未被调用。请帮我修一下
<!DOCTYPE html>
<html>
<head>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js"></script>
<script src="xhr.js"></script>
<script src="intelxdk.js">
</script>
<script>
var OAUTHURL = 'https://accounts.google.com/o/oauth2/auth?';
var VALIDURL = 'https://www.googleapis.com/oauth2/v1/tokeninfo?access_token=';
var SCOPE = 'https://www.googleapis.com/auth/userinfo.profile https://www.googleapis.com/auth/userinfo.email';
var CLIENTID = '****************************';
var REDIRECT = 'http://example.com/oauth2callback'
var LOGOUT = 'http://accounts.google.com/Logout';
var TYPE = 'token';
var _url = OAUTHURL + 'scope=' + SCOPE + '&client_id=' + CLIENTID + '&redirect_uri=' + REDIRECT + '&response_type=' + TYPE;
var acToken;
var tokenType;
var expiresIn;
var user;
var loggedIn = false;
function login() {
var win = window.open(_url);
var pollTimer = window.setInterval(function() {
try {
console.log(win.document.URL);
if (win.document.URL.indexOf(REDIRECT) != -1) {
window.clearInterval(pollTimer);
var url = win.document.URL;
acToken = gup(url, 'access_token');
tokenType = gup(url, 'token_type');
expiresIn = gup(url, 'expires_in');
getUserInfo(acToken);
}
} catch(e) {
;}
}, 500);
}
function gup(url, name) {
name = name.replace(/[\[]/,"\\\[").replace(/[\]]/,"\\\]");
var regexS = "[\\#&]"+name+"=([^&#]*)";
var regex = new RegExp( regexS );
var results = regex.exec( url );
if( results == null )
return "";
else
return results[1];
}
function getUserInfo() {
var url_token= 'https://script.google.com/macros/s/****************************/exec?access_token=' + acToken;
window.open(url_token);
}
</script>
</head>
<body>
<a href='#' onClick='login(); id="loginText"'> Click here to login </a>
<div id='uName'></div>
<img src='' id='imgHolder'/>
</body>
</html>
var oauthull='1〕https://accounts.google.com/o/oauth2/auth?';
var VALIDURL=https://www.googleapis.com/oauth2/v1/tokeninfo?access_token=';
var范围=https://www.googleapis.com/auth/userinfo.profile https://www.googleapis.com/auth/userinfo.email';
var CLIENTID='*********************************';
var重定向http://example.com/oauth2callback'
var注销http://accounts.google.com/Logout';
变量类型='token';
var_url=oauthull+'scope='+scope+'&client_id='+CLIENTID+'&redirect_uri='+redirect+'&response_type='+type;
阿克托肯变种;
var标记类型;
呼气蛋白;
var用户;
var loggedIn=假;
函数登录(){
var win=window.open(_url);
var pollTimer=window.setInterval(函数(){
试一试{
log(win.document.URL);
if(win.document.URL.indexOf(重定向)!=-1){
窗口清除间隔(轮询计时器);
var url=win.document.url;
acToken=gup(url,“访问令牌”);
tokenType=gup(url,“token_type”);
expiresIn=gup(url,‘expires_in’);
getUserInfo(acToken);
}
}捕获(e){
;}
}, 500);
}
函数gup(url、名称){
名称=名称。替换(/[\[]/,“\\\[”)。替换(/[\]]/,“\\\]”);
var regexS=“[\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\;
var regex=新的RegExp(regexS);
var results=regex.exec(url);
如果(结果==null)
返回“”;
其他的
返回结果[1];
}
函数getUserInfo(){
var url_令牌=https://script.google.com/macros/s/****************************/exec?access_token='+acToken;
打开(url\U令牌);
}
下面是一个oauth2示例,用于英特尔XDK,添加InAppBrowser插件并进行测试:感谢Rakshith,我之前使用Appbrowser插件尝试过你的github代码,但它不起作用。我不确定,我改变了什么。但是,瞧,它现在起作用了!!非常感谢。。真高兴@krisrak嗨Rakshit,我面临另一个问题。每次我重新打开我的应用程序,我必须一次又一次地登录。有什么办法可以解决这个问题?提前感谢您获得access_token,您必须将其保存在本地存储或其他地方,并且您的应用程序应该使用它(如果可用),如果没有,您必须显示登录按钮HERE是用于Intel XDK的oauth2示例,请添加InApp浏览器插件并测试:感谢Rakshith,我之前用Appbrowser插件尝试过你的github代码,但它不起作用。我不确定,我改变了什么。但是,瞧,它现在起作用了!!非常感谢。。真高兴@krisrak嗨Rakshit,我面临另一个问题。每次我重新打开我的应用程序,我必须一次又一次地登录。有什么办法可以解决这个问题?提前感谢您获得访问令牌,您必须保存在本地存储或其他地方,并且您的应用程序应该使用该令牌(如果可用),如果不可用,您必须显示登录按钮