【问题标题】:gapi.client.load('youtube', 'v3') not working on ios use phonegapgapi.client.load('youtube', 'v3') 不适用于 ios 使用 phonegap
【发布时间】:2017-02-24 15:22:02
【问题描述】:

我使用 youtube 和 Map api 和 phonegap 构建了一个应用程序。 使用 Phonegap Developer 应用在​​设备上进行测试。

var API_KEY = xxxx;

$(document).ready(function () {
    $.getScript('https://apis.google.com/js/client.js?onload=handleClientLoad');
});

function handleClientLoad() {
    alert("msg 1");
    gapi.client.load('youtube', 'v3', function () {
        alert("msg 2");            
        $.getScript('https://maps.googleapis.com/maps/api/js?sensor=false&libraries=places&callback=handleMapsLoad&key=' + API_KEY);
    });
}
function handleMapsLoad() {
    alert("msg 3");

    geocoder = new google.maps.Geocoder();


}

在 Chrome 模拟扩展上一切正常。和 Android 操作系统:显示:msg 1. msg 2, msg 3。

但不适用于 iOS,只有 msg 1 不是 msg 2、msg 3。和错误消息:[phonegap] [console.log] Error in Success callbackId: Geolocation191878646 : ReferenceError: Can't find variable: google

p/s: ip 6s iOS 10.0.2,我检查了,API_KEY 不受限制。

感谢任何建议。

【问题讨论】:

    标签: ios cordova phonegap-plugins youtube-data-api


    【解决方案1】:

    我已经搜索并测试了所有解决方案 3 周,但没有找到解决方案。我发现问题是由PhoneGap Developer App 引起的,而不是YouTube API 或其他配置。

    只有通过TestFlightiTunes(已发布的应用程序)将应用程序安装在真实设备(不是模拟器)上时,问题才会得到解决,一切正常。

    原因: - gapi 库使用 iframe 进行网络请求,但 iTunes(当前版本 1.7.6)上的 PhoneGap Developer App 不允许使用 iframe

    【讨论】:

    • 伙计们,不要忘记添加 accounts.google.com" /> content.googleapis.com" /> 因为你不会收到错误带有 gapi.client.load 的模拟器,尽管您仍然需要正确设置应用程序传输安全设置!
    【解决方案2】:

    我遇到了同样的问题。 已解决将以下指令添加到 config.xml:

    <access origin="https://*.google.com/*" />
    <access origin="https://*.googleapis.com/*" />
    <allow-navigation href="https://*.google.com/*" />
    <allow-navigation href="https://*.googleapis.com/*" />
    

    wss: 协议到 Content-Security-Policy(index.html 中的元标记),如下所示:

    <meta http-equiv="Content-Security-Policy"
        content="default-src * gap://ready file: wss:;
            script-src 'self' 'unsafe-inline' 'unsafe-eval'
                127.0.0.1:*
                http://*.google.com
                http://*.googleapis.com
                https://*.google.com
                https://*.googleapis.com;
    ">
    

    说明:您必须允许gapi.client.load() 生成的 iframe 才能导航到 Google API。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-10-13
      • 2020-01-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多