谷歌加登录句柄结果

GooglePlus login handle result

本文关键字:结果 句柄 登录 谷歌      更新时间:2023-09-26

在我的聚合物页面上,我尝试登录到我的google-plus页面并检索我的名字和封面照片网址。为此,我使用了一个 google-signin 元素,该元素在登录完成后运行以下函数:

loginSuccess: function(e){
    console.log("Success!");
    gapi.client.load('plus', 'v1', function() {
        var request = gapi.client.plus.people.get( {'userId' : 'me'} );
        request.execute(function(retr){
            console.log("Data Loaded");
            console.log(retr);
            this.myFunction(retr);
        });
    });
}

直到"数据加载"一切正常,控制台也从谷歌加打印出整个结果对象。但是我无法执行函数(this.myFunction)或从那里的聚合物访问数据。如何将来自 gapi-request 的结果数据存储到我的聚合物变量中???

谢谢,麦芽

在 Ajax 结果中,this上下文是不同的。您需要在 ajax 请求之前或在函数访问它之前设置一个变量,如下所示:

self: this,
loginSuccess: function(e){
    console.log("Success!");
    gapi.client.load('plus', 'v1', function() {
        var request = gapi.client.plus.people.get( {'userId' : 'me'} );
        request.execute(function(retr){
            console.log("Data Loaded");
            console.log(retr);
            self.myFunction(retr);
        });
    });
}

我刚刚发现,我选择了错误的方式来获取我的个人资料数据。

有一种聚合物元素可以从名为google-api-loader(http://googlewebcomponents.github.io/google-apis/components/google-apis/#google-api-loader)的google-api获取数据。除了google-signin元素之外,我还以以下方式使用该元素:

<google-api-loader id="plus" name="plus" version="v1" on-google-api-load="{{displayProfile}}"> </google-api-loader>

这里的函数displayProfile

    displayProfile: function(){
        if (this.signedIn && this.$.plus.api) {
            var request = this.$.plus.api.people.get({"userId": "me"});
            request.execute(function (resp) {
                this.userData = resp;
            }.bind(this));
        }
    }

它工作得很好,我可以通过this.userData访问数据。这是另一个例子:https://github.com/Scarygami/google-signin-samples/blob/master/elements/google-signin-status.html