javascript – 如何在分析API上设置访问令牌?

前端之家收集整理的这篇文章主要介绍了javascript – 如何在分析API上设置访问令牌?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

我想知道,该文档提供了使用多种语言实现Analytics API的教程.

现在在PHP中他们展示了如何存储访问令牌并维护它,现在我假设JS以某种方式在某种本地存储中保证它,但我不希望用户每次访问时都要进行身份验证,所以我的计划是保存访问&刷新我的数据库中的令牌,只需将其应用到客户端,而不是通过所有弹出的procress.

根据教程:

 gapi.auth.authorize({client_id: clientId,scope: scopes,immediate: false},result);

触发返回访问令牌的弹出窗口,但我再次说我对从数据库提交令牌感兴趣.

怎么办?

是否有一些gapi.auth.setToken(令牌)方法,我可以调用核心报告API?

最佳答案
我已经使用google的PHP客户端库编写了PHP来执行auth之后,我来到这里寻找解决方案.我想像你提到的那样共享存储的令牌,并且能够使用javascript而无需重新验证,和/或触发弹出窗口(可能有一个使用.init(回调)方法解决方案,请参阅docs / links at结束).

Is there some gapi.auth.setToken(token) method

事实证明,你可以提到确切的setToken(令牌)函数,甚至可以共享PHP早期生成的auth令牌.我还不确定的是,如果我们应该这样做:)

我正在使用PHP来执行初始身份验证,但是在javascript客户端中,您可以使用getToken()以与此示例相同的方式调用setToken().也许有更好的方法,比如API认证文档中提到的CORS(参见最后的链接),我还没有机会调查其中的任何一个,但是,我可以举一个例子来回答这个问题,并且可能对需要相同行为的其他人有用

我首先找到了Google开发人员Dan Holevoet的博文,其中包含一些示例JS代码.

http://googleappsdeveloper.blogspot.com.au/2011/12/using-new-js-library-to-unlock-power-of.html

很高兴能够直接使用javascript查询API,并动态加载列表等,但当然让我担心的事情是在js中存储clientid等.

// Snippet from Dan's post
var clientId = 'YOUR_CLIENT_ID';
var apiKey = 'YOUR_API_KEY';
var scopes = 'https://www.googleapis.com/auth/calendar';

function handleClientLoad() {
    gapi.client.setApiKey(apiKey);
    window.setTimeout(checkAuth,1);
    checkAuth();
}

但是,据丹在回答同一个问题时说:

The apiKey is used in conjunction with designated referrers,which you
must declare in the APIs Console. If the key is sent from an
unauthorized referrer,it will not work. You should make your accepted
referrer list as limited as possible to ensure that others do not use
your apiKey for their own requests.

现在,我的示例是针对日历API,但它似乎与其他API非常一致.

注意:此代码段仅用于概念验证目的,可能不应在生产中使用.我假设提到的引用者保护使得这样的事情可以做,但需要更多的思考.它可以通过隐藏输入,AJAX调用等来完成.但最终,它们都将在javascript中可见.

我为测试这个概念所做的是:

>通过PHP客户端库进行身份验证,使用与回调相同的脚本/ URL(有关这些回调,请参阅[API控制台] [2])
>在成功的身份验证中,在回调中,将页面中的全局javascript变量设置为存储的PHP身份验证令牌
>加载页面后,在第一次单击事件中使用javascript(甚至在文档就绪),调用authMe()来设置令牌
>然后正常进行,调用您在初始PHP身份验证过程中给出范围的任何JavaScript API方法(在本例中为makeApiCall())

像这样:

PHP回调例程中,无论是否已经过身份验证(假设您的回调URL是相同的脚本),请使此var全局

猜你在找的JavaScript相关文章