Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/229.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Google Oauth用于使用javascript安装的应用程序_Javascript_Android_Jquery_Oauth_Google Oauth - Fatal编程技术网

Google Oauth用于使用javascript安装的应用程序

Google Oauth用于使用javascript安装的应用程序,javascript,android,jquery,oauth,google-oauth,Javascript,Android,Jquery,Oauth,Google Oauth,我正在尝试在我的android或tizen设备中使用javascript实现GoogleOAuth。我不想使用phone gap或其他库,我使用的是jquery。我可以在手机的浏览器中获取sigin页面,在接受权限后,浏览器会将我重定向到一个网页,上面写着“复制此代码并粘贴到您的应用程序中”。成功的代码示例为“4/wxtgskd_jsdskeehd”。但我不知道从这里该怎么办。如何复制此代码或如何从此处执行完整oauth。或者如何从浏览器返回到我的应用程序。 下面是oauth的完整代码。 v

我正在尝试在我的android或tizen设备中使用javascript实现GoogleOAuth。我不想使用phone gap或其他库,我使用的是jquery。我可以在手机的浏览器中获取sigin页面,在接受权限后,浏览器会将我重定向到一个网页,上面写着“复制此代码并粘贴到您的应用程序中”。成功的代码示例为“4/wxtgskd_jsdskeehd”。但我不知道从这里该怎么办。如何复制此代码或如何从此处执行完整oauth。或者如何从浏览器返回到我的应用程序。 下面是oauth的完整代码。


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='103321196121-1adn1lgikd9sepmk6kp4lel1i72fhf96.apps.googleusercontent.com';
var重定向='urn:ietf:wg:oauth:2.0:oob'
var注销http://accounts.google.com/Logout';
变量类型='代码';
var_url=oauthull+'scope='+scope+'&client_id='+CLIENTID+'&redirect_uri='+redirect+'&response_type='+type;
阿克托肯变种;
var标记类型;
呼气蛋白;
var用户;
var代码;
var loggedIn=假;
函数登录(){
var win=window.open(_url,“windowname1”,“width=800,height=600”);
var pollTimer=window.setInterval(函数(){
试一试{
if(win.document.URL.indexOf(重定向)!=-1){
窗口清除间隔(轮询计时器);
var url=win.document.url;
代码=gup(url,“代码”);
console.log(url);
acToken=gup(url,“访问令牌”);
tokenType=gup(url,“token_type”);
expiresIn=gup(url,‘expires_in’);
win.close();
validateToken(acToken);
}
}捕获(e){
}
}, 500);
警报(win.document.URL);
}
函数validateToken(令牌){
$.ajax({
url:VALIDURL+令牌,
数据:空,
成功:函数(responseText){
getUserInfo();
loggedIn=true;
$('#loginText').hide();
$('#logoutText').show();
},  
数据类型:“jsonp”
});
}
函数getUserInfo(){
$.ajax({
网址:'https://www.googleapis.com/oauth2/v1/userinfo?access_token=“+acToken,
数据:空,
成功:功能(resp){
用户=resp;
console.log(用户);
$('uName').text('Welcome'+user.name);
$('imgHolder').attr('src',user.picture);
},
数据类型:“jsonp”
});
}
//学分:http://www.netlobo.com/url_query_string_javascript.html
函数gup(url、名称){
名称=名称。替换(/[\[]/,“\\\[”)。替换(/[\]]/,“\\\]”);
var regexS=“[\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\;
var regex=新的RegExp(regexS);
var results=regex.exec(url);
如果(结果==null)
返回“”;
其他的
返回结果[1];
}
函数startogoutpolling(){
$('#loginText').show();
$('#logoutText').hide();
loggedIn=false;
$('uName')。文本('Welcome');
$('imgHolder').attr('src','none.jpg');
}
您应该使用“令牌”(而不是“代码”)响应类型

令牌流将直接在URL哈希中访问令牌,而代码流将返回授权,以便您可以从令牌端点获取访问令牌

<html>
<head>
   <script src="js/lib/jquery-2.0.3.min.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    =   '103321196121-1adn1lgikd9sepmk6kp4lel1i72fhf96.apps.googleusercontent.com';
        var REDIRECT    =   'urn:ietf:wg:oauth:2.0:oob'
        var LOGOUT      =   'http://accounts.google.com/Logout';
        var TYPE        =   'code';
        var _url        =   OAUTHURL + 'scope=' + SCOPE + '&client_id=' + CLIENTID + '&redirect_uri=' + REDIRECT + '&response_type=' + TYPE;
        var acToken;
        var tokenType;
        var expiresIn;
        var user;
        var code;
        var loggedIn    =   false;

        function login() {
            var win         =   window.open(_url, "windowname1", 'width=800, height=600'); 

            var pollTimer   =   window.setInterval(function() { 
                try {

                    if (win.document.URL.indexOf(REDIRECT) != -1) {

                        window.clearInterval(pollTimer);

                        var url =   win.document.URL;
                        code= gup(url, 'code');
                        console.log(url);
                        acToken =   gup(url, 'access_token');
                        tokenType = gup(url, 'token_type');
                        expiresIn = gup(url, 'expires_in');
                        win.close();

                        validateToken(acToken);
                    }
                } catch(e) {
                }
            }, 500);
             alert(win.document.URL);
        }

        function validateToken(token) {
            $.ajax({
                url: VALIDURL + token,
                data: null,
                success: function(responseText){  
                    getUserInfo();
                    loggedIn = true;
                    $('#loginText').hide();
                    $('#logoutText').show();
                },  
                dataType: "jsonp"  
            });
        }

        function getUserInfo() {
            $.ajax({
                url: 'https://www.googleapis.com/oauth2/v1/userinfo?access_token=' + acToken,
                data: null,
                success: function(resp) {
                    user    =   resp;
                    console.log(user);
                    $('#uName').text('Welcome ' + user.name);
                    $('#imgHolder').attr('src', user.picture);
                },
                dataType: "jsonp"
            });
        }

        //credits: http://www.netlobo.com/url_query_string_javascript.html
        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 startLogoutPolling() {
            $('#loginText').show();
            $('#logoutText').hide();
            loggedIn = false;
            $('#uName').text('Welcome ');
            $('#imgHolder').attr('src', 'none.jpg');
        }

    </script>
</head>

<body>
    <a href='#' onClick='login();' id="loginText"'> Click here to login </a>
    <a href="#" style="display:none" id="logoutText" target='myIFrame' onclick="myIFrame.location='https://www.google.com/accounts/Logout'; startLogoutPolling();return false;"> Click here to logout </a>
    <iframe name='myIFrame' id="myIFrame" style='display:none'></iframe>
    <div id='uName'></div>
    <img src='' id='imgHolder'/>
</body>
</html>