如何在离子应用程序中实现谷歌驱动器

时间:2016-03-02 12:06:00

标签: cordova parse-platform ionic-framework google-drive-api

我需要将我的离子应用程序连接到谷歌驱动器,显示所有文件,也许上传,下载,删除,编辑。所以我试试这个 https://github.com/Raza-Dar/ionic-google-drive2

错误: 无法加载资源:服务器响应状态为404(未找到)https://apis.google.com//scs/apps-static//js/k=oz.gapi.en.RArmLpCIYB0.O/m ... 1 / ed = 1 / am = QQ / rs = AGLTcCOEiG2RgKkKDvOG7y5PZ-fMFMsJXQ / t = zcms / cb = gapi.loaded_01

未捕获的TypeError:无法调用未定义的方法'load'

无法找到InAppBrowser插件

这个 http://blog.ionic.io/oauth-ionic-ngcordova/1 控制台上没有错误...但是在验证后返回主页

这个 http://excellencenodejsblog.com/cordova-ionic-google-oauth-login-for-your-mobile-app/ 有了这个,我得到了用户的信息,但没有得到驱动器中的文件

任何建议?我需要一些工作示例入门代码 谢谢

2 个答案:

答案 0 :(得分:5)

您需要使用Google本地验证您的cordova应用程序才能使用API​​。首先,按照每个平台(iOS和Android)的官方Google指南(如果您还没有),为您的应用程序创建所需的凭据。然后尝试以下链接上的插件:

Cordova google drive plugin

我为个人移动项目创建了这个插件。此插件支持上载,下载和文件列表。

要检索Android应用程序创建/上传的文件列表,您可以在Java端尝试:

private void fileList() {
    Query query = new Query.Builder().addFilter(Filters.and(
            Filters.eq(SearchableField.MIME_TYPE, "application/octet-stream"),
            Filters.eq(SearchableField.TRASHED, false))).build();

    Drive.DriveApi.query(mGoogleApiClient, query)
            .setResultCallback(new ResultCallback<DriveApi.MetadataBufferResult>() {
                @Override
                public void onResult(DriveApi.MetadataBufferResult result) {
                    if (!result.getStatus().isSuccess()) {
                        mCallbackContext.sendPluginResult(new PluginResult(PluginResult.Status.ERROR,"failed to retrieve file list"));
                        return;
                    }
                    MetadataBuffer flist = result.getMetadataBuffer();
                    Log.i(TAG,flist.get(0).getClass().getName());
                    JSONArray response = new JSONArray();
                    for (Metadata file: flist
                         ) {
                        try {
                            response.put(new JSONObject().put("name", file.getTitle()).put("created", file.getCreatedDate().toString()).put("id", file.getDriveId().toString()));
                        }catch (JSONException ex){ex.getMessage();}
                    }
                    JSONObject flistJSON = new JSONObject();
                    try{
                        flistJSON.put("flist", response);
                    } catch (JSONException ex){}
                    mCallbackContext.sendPluginResult(new PluginResult(PluginResult.Status.OK,flistJSON));
                    flist.release();
                    //Log.i(TAG,flist.toString());
                }
            });
}

答案 1 :(得分:4)

您是否在Google Developer Console上为您的应用程序正确创建了项目?已启用Google Drive API?配置您的凭据和身份验证视图以使用您的应用程序? 好的,使用Google Api的任何端点,都会带您完成两个步骤:

  1. 使用您需要的api密钥和范围记录用户,如果成功,您将获得 access_token,以便能够使用API​​一小时:在您喜欢的情况下使用$ cordovaOauth.google(YOUR_API_KEY,YOUR_SCOPES),范围是一系列权限,例如[&#39; https://www.googleapis.com/auth/drive&#39;],在这种情况下,意味着&#34; APPName需要管理( crud)你的文件&#34;
  2. 使用访问令牌和api密钥制作所需的请求,例如创建文件夹:

    $http.post(
       'https://www.googleapis.com/drive/v2/files&access_token='+ACCESS_TOKEN,
        {
           title:"FolderName",
           mimeType: "application/vnd.google-apps.folder", // special mimeType for google drive folders
           key: YOUR_API_KEY
        }
    ).success(function (data) {
        console.log(data.id); // id of the created folder
        console.log(data.alternateLink); // Web link to created folder
    }).catch(function(err){
        console.log(err); 
    })
    

    使用https://www.googleapis.com/drive/v2/files的网址用于元数据请求,要上传,您会更喜欢https://www.googleapis.com/ 上传 / drive / v2 / files,以获取更多文档{{3 }}

  3. 永远不要忘记ngCordova功能仅适用于设备或模拟器,而不适用于浏览器/导航器。