在Cordova/Phonegap中使用Google API javascript

在Cordova/Phonegap中使用Google API javascript,javascript,cordova,google-drive-api,phonegap-plugins,google-signin,Javascript,Cordova,Google Drive Api,Phonegap Plugins,Google Signin,我正在用Cordova开发一个应用程序,希望将文件保存在谷歌硬盘中 我使用cordova插件googleplus()成功登录Google。但是,我无法将插件返回给我accessToken或idToken,以便我可以与Google javascript API一起使用 window.plugins.googleplus.login( { 'scopes': 'https://www.googleapis.com/auth/drive.file profile',

我正在用Cordova开发一个应用程序,希望将文件保存在谷歌硬盘中

我使用cordova插件googleplus()成功登录Google。但是,我无法将插件返回给我accessToken或idToken,以便我可以与Google javascript API一起使用

window.plugins.googleplus.login(
    {
        'scopes': 'https://www.googleapis.com/auth/drive.file profile',
        'offline': true, 
        'webApiKey': ‘CODE’ 
    },
    function (obj) {
        $scope.$apply(function() {
            $scope.srcImage = obj.imageUrl;
            $scope.NomeGoogle = obj.displayName;
        });
    },
    function (msg) {
        alert('Erro');
        alert('error: ' + msg);
    }
);
我尝试使用以下代码,但返回以下错误:

“未捕获gapi.auth2.ExternallyVisibleError:无效的cookiePolicy”

试一试


我设法解决了问题,为什么不从插件中获取serverAuthCode。 有必要在Google开发者控制台上创建2个凭据。第一个必须是Android,这将是插件和第二个应该是一个网络应用程序,这是必要的实现serverAuthCode

代码如下所示

window.plugins.googleplus.login(
    {
        'scopes': 'https://www.googleapis.com/auth/drive.file profile',
        'offline': true, 
        'webApiKey': ‘REVERSED_CODE of Web App Credential’ 
    },
    function (obj) {
        $scope.$apply(function() {
            $scope.srcImage = obj.imageUrl;
            $scope.NomeGoogle = obj.displayName;
        });


            var data = $.param({
                client_id: 'REVERSED_CODE of Web App Credential',
                client_secret: 'SECRET_CODE of Web App Credential',
                grant_type: 'authorization_code',
                code: obj.serverAuthCode
            });

            var config = {
                headers : {
                    'Content-Type': 'application/x-www-form-urlencoded;charset=utf-8;'
                }
            }

            $http.post("https://www.googleapis.com/oauth2/v3/token", data, config).success(function(data, status) {
                //data.access_token;

/** from now you can do use of google API **/

            })
            .error(function(data, status) {
                console.log(data);
                console.log(status);
            });

    },
    function (msg) {
        alert('Erro');
        alert('error: ' + msg);
    }
);

感谢您的回复rojobo起初我希望跳过对cordova插件googleplus的需求,只需使用cordova/PhoneGap中的
gapi
来处理与Google的身份验证,但它似乎是唯一的选择

在检索
access\u令牌后,当我尝试使用
gapi
时,发送给我的方向是正确的,但我不断收到
Invalid cookiePolicy
错误(这是因为我忽略了下面列出的步骤#2,在使用plugini进行身份验证后,我错误地尝试使用
gapi
再次进行身份验证)

有一个步骤(下面提到的第3步)我不清楚。要通过谷歌认证,然后使用Cordova/PhoneGap中的
gapi
,这一步起了作用

  • 使用来处理身份验证和访问令牌检索,这里根本不使用gapi
  • 加载gapi客户端库(跳过
    gapi.client.init()
    调用和所有正常的gapi身份验证过程)
  • 将我们从插件获得的访问令牌附加到gapi客户端,然后根据需要进行gapi调用
  • 步骤#3完成了,这意味着我需要添加
    access\u令牌

    gapi.client.setToken({access_token:'abc123456xyz'});
    
    一旦访问令牌连接到gapi客户端,我就可以在Cordova/Phonegap中使用gapi:

    // Load the YouTube API.
    gapi.client.load('youtube', 'v3', function() {
      // Do stuff...
    };
    

    使用typescript在angular2中应该做什么?$.param是Jquery方法,但angular2不支持Jquery?
    gapi.client.setToken({access_token:'abc123456xyz'});
    
    // Load the YouTube API.
    gapi.client.load('youtube', 'v3', function() {
      // Do stuff...
    };