我想有两个流程,在第一页中,我只是要求用户登录。
然后,如果他/她想邀请朋友,我想触发gapi.client.people.list方法并检索可见的圈子列表。
当我在两个单独的页面上执行此操作时,我无法携带已通过身份验证的apgi对象。我不想再次触发登录流程,但是如果我直接执行gapi.client.load,它会给我一个错误,提示Daily unauthenticated usage limit exceeded

function getFriends(e)
{

    gapi.client.load('plus','v1', function(){
            //gapi.client.setApiKey("myKey");
            var request = gapi.client.plus.people.list({
                    'userId': 'me',
                'collection': 'visible'
            });
            request.execute(function(people) {
                    console.log(people);
                    $('#googleFriends').empty();
                    $('#googleFriends').append('Number of people visible to this app: ' +
                            people.totalItems + '<br/>');
                    for (var personIndex in people.items) {
                            person = people.items[personIndex];
                            $('#googleFriends').append('<img src="' + person.image.url + '">');
                    }
            });
    });
}


这里有解决方案吗?我尝试使用gapi.client.setApiKey,但始终返回invalid key error
我已阅读并尝试了解Google快速入门教程,但在此他们将people.list作为登录流程的一部分。

最佳答案

如果用户已经登录/授权了您的应用程序,则可以将gapi.auth.authorize方法与用于登录的相同client_idscope参数一起使用,并且immediate设置为true

gapi.auth.authorize({
  client_id: 'your_client_id',
  scope: 'your_scopes',
  immediate: true
}, function (authResult) {
  // check authresult and then call getFriends
});


这将通过身份验证过程,而无需任何用户交互,并且gapi.client将能够进行授权的呼叫。但是,您将必须在回调中检查响应,以确保您已获得实际授权。

文件:https://developers.google.com/api-client-library/javascript/reference/referencedocs#gapiauthauthorize

关于javascript - 有什么办法可以在多个页面上携带gapi.client对象?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/25527736/

10-12 22:55