1

Google plus API を使用して、Web サイトの閲覧者からメール ID を取得しています。

Google 参照: https://developers.google.com/+/web/signin/add-button

問題は、サインイン ボタンをクリックすると、ブラウザ コンソールで「TypeError: gapi.client.plus is undefined」というエラーが表示されることです。

それを解決する方法。

私のコード:

      <script src="https://apis.google.com/js/client:plusone.js?onload=signinCallback" type="text/javascript"></script>

      <span id="signinButton">
        <span class="g-signin" 
            data-callback="signinCallback"
            data-clientid="*****************.apps.googleusercontent.com"
            data-cookiepolicy="single_host_origin" 
            data-scope="profile">
        </span>
     </span>

function signinCallback(authResult) {

    gapi.client.load('plus', 'v1',function(){});

if (authResult['status']['signed_in']) {
    alert("login success");
    document.getElementById('signinButton').setAttribute('style',
            'display: none');

    var request = gapi.client.plus.people.get({
        'userId' : 'me'
    });
    request.execute(function(resp) {
        var email = '';
        if(resp['emails'])
        {
            for(var i = 0; i < resp['emails'].length; i++)
            {
                if(resp['emails'][i]['type'] == 'account')
                {
                    email = resp['emails'][i]['value'];
                }
            }
        }
        alert("email ="+email);
        console.log('ID: ' + resp.id);
        console.log('Display Name: ' + resp.displayName);
        console.log('Image URL: ' + resp.image.url);
        console.log('Profile URL: ' + resp.url);
    });
} else {
    alert("login unsuccessful");
    console.log('Sign-in state: ' + authResult['error']);
}

}

4

2 に答える 2

0

私はこの問題を抱えていました、

問題はここにあると思います

gapi.client.load('plus', 'v1',function(){});

3 番目のパラメーターは空であり、Google はオプションとして宣言していますが、それを使用しようとしている関数によって使用されていないか到達されていないため、未定義としてエラーになる傾向があります。

代わりに、gapi.client を必要とする関数をその 3 番目のパラメーター内にネストするか、そこで外部関数を参照することができます。

これが私がしたことです:

Google ログイン コールバック - 名前とメールアドレスを取得

于 2014-10-17T20:06:02.827 に答える