尝试使用c#asp.net

时间:2015-07-13 07:54:34

标签: javascript asp.net google-oauth google-login

我需要在我的页面中登录google。我得到了我的clientID并在Google Console中设置了redirect_uri路径,但是当我尝试登录时,它给了我以下错误。我正在我的asp.net页面上集成它。

  

错误:       那是一个错误       错误:redirect_uri_mismatch
      适用范围:odiyaDoctor
      您可以通过以下电子邮件向该应用程序的开发人员发送电子邮件:odiyadoctor@gmail.com
      请求中的重定向URI:http://localhost/immediateHelp.aspx与注册的重定向URI不匹配。

我的要求是用户将在第一页(UserLogin.aspx)上通过谷歌登录,成功登录后,下一页(i.e.immediateHelp.aspx)将会到来。我正在解释下面的所有代码和Google凭据。

UserLogin.aspx:

<a href="#" class="btn btn-large btn-block btn-google" onclick="googleLogin();"  >Login with Google <i class="fa fa-google-plus"></i></a>
<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 = '*************************g96b1elfa8.apps.googleusercontent.com';
    var REDIRECT = 'http://localhost/immediateHelp.aspx';
    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 googleLogin() {
        var win = window.open(_url, "windowname1", 'width=800, height=600');
        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');
                    win.close();
                    validateToken(acToken);
                }
            } catch (e) {
                console.log('its error', e);
            }
        }, 500);
    }
    function validateToken(token) {
        $.ajax({
            url: VALIDURL + token,
            data: null,
            success: function (responseText) {
                getUserInfo();
                loggedIn = true;
                window.location.href = "immediateHelp.aspx";
            },
            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 info',user);
                $('#imgHolder').attr('src', user.picture);
            },
            dataType: "jsonp"
        });
    }
    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];
    }
</script>

在上面的页面中,下面的错误出现在catch部分。

  

http://localhost:3440/UserLogin.aspx:92:32       UserLogin.aspx:103其错误DOMException:阻止具有原点“http://localhost:3440”的帧访问跨源帧。           在错误(本机)

     

在Google中设置的clientID。

Web应用程序的客户端ID

Client ID   
***************************************1ctsjaeg96b1elfa8.apps.googleusercontent.com
Client secret   
*********oGbT13hv3S
Redirect URIs   
https://localhost/immediateHelp.aspx
JavaScript origins  
https://localhost

我需要在用户成功登录时,它会重定向到immediateHelp.aspx页面,在此页面中,用户可以进行注销。请帮我解决这些错误。

1 个答案:

答案 0 :(得分:0)

tcl::mathop::**

网址必须是完美的字符