Access Poken无效的Google Picker

时间:2017-01-12 16:29:51

标签: javascript php google-authentication google-picker google-php-sdk

我似乎无法让Google Picker工作。我使用PHP League Oauth Provider

对我的用户进行了身份验证

经过身份验证后,我的用户的accessToken看起来像这样;

  

ya67.Fi_dfioriogneegroig7Czdy54z0sdfdvnfr9fn38n3n93

这是我用于呈现选择器的Javascript和HTML代码;

<a href="{{ appContextInstallId }}/authenticate" class="btn info">
    <i class="icon-bolt"></i> Authenticate
</a>

<button onClick="createPicker()">Add a new document</button>

<script type="text/javascript">

    var developerKey = 'erteetr43gg-V34y4httytjyjytjyttyjyjyjjy';
    var clientId = "373498750987-5dsfwerrwewerweewrl.apps.googleusercontent.com"
    var appId = "373498750987"

    var scope = ['https://www.googleapis.com/auth/drive'];
    var pickerApiLoaded = false;

    // Use the Google API Loader script to load the google.picker script.

    // Create and render a Picker object for searching images.
    function createPicker() {
        var view = new google.picker.View(google.picker.ViewId.DOCS);
        var picker = new google.picker.PickerBuilder()
            .enableFeature(google.picker.Feature.NAV_HIDDEN)
            .enableFeature(google.picker.Feature.MULTISELECT_ENABLED)
            .setAppId(appId)
            .setOAuthToken("{{ token|escape }}")
            .addView(view)
            .addView(new google.picker.DocsUploadView())
            .setDeveloperKey(developerKey)
            .setCallback(pickerCallback)
            .build();

        picker.setVisible(true);
    }

    // A simple callback implementation.
    function pickerCallback(data) {
        // makes an ajax call....
    }
</script>

<!-- The Google API Loader script. -->
<script type="text/javascript" src="https://apis.google.com/js/api.js"></script>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.1.1/jquery.min.js"></script>

我的accessToken位于{{ token|escape }}

当我尝试单击“添加新文档”按钮时,出现以下错误。

  

未捕获的ReferenceError:google未在createPicker

中定义

我不知道为什么会这样。我没有正确使用访问令牌吗?

顺便说一句,我需要使用服务器端技术来获取accessToken业务,因为我有多个子域,您无法在Google Dev Console中对它们进行通配。因此,我不能只使用标准示例like this one来通过客户端进行身份验证。

PS - 显然这些不是我上面代码块中的真实代币/秘密。他们已经改变了。

1 个答案:

答案 0 :(得分:0)

您可以查看Google Loader Developer's Guide以获取有关如何加载Google API的更详细信息。

如上所述,

  

要加载API,请在网页标题中包含以下脚本。

     

def findMedians(a): return ''.join(sorted(d)[len(a)/2] for d in zip(*a)) print findMedians(['00100','00101','00101','01100','01001','00101']) # 00101 print findMedians(['1210', '2501', '1234']) # 1211

     

接下来,使用google.load(模块,版本)加载Google API,其中

     
      
  • print zip('123','456','789') a = ['123','456','789'] print zip(*a) 调用您希望在页面上使用的特定API模块。
  •   
  • <script type="text/javascript" src="https://www.google.com/jsapi"></script>是您要加载的模块的版本号。
  •   
     

致电module后,您可以使用网页中所有已加载的模块。

最后,您可能需要检查Available APIs,特别是Picker API Developer's Guide,并确保在创建version对象时没有错过重要功能。

希望有所帮助!