【问题标题】:how implement google drive in ionic app如何在离子应用程序中实现谷歌驱动器
【发布时间】:2016-06-15 06:41:03
【问题描述】:

我需要将我的 ionic 应用程序连接到谷歌驱动器,显示所有文件,并可能上传、下载、删除、编辑。所以我试试这个 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

未捕获的类型错误:无法调用未定义的方法“加载”

找不到 InAppBrowser 插件

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

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

有什么建议吗?请我需要一些工作示例启动代码 谢谢

【问题讨论】:

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


    【解决方案1】:

    您需要通过 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());
                    }
                });
    }
    

    【讨论】:

    【解决方案2】:

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

    1. 使用您所需的 api 密钥和范围记录用户,如果成功,您将获得 一个 access_token 以便能够使用 API 一个小时:在您的情况下,更喜欢使用 $cordovaOauth .google(YOUR_API_KEY,YOUR_SCOPES),范围是一个权限数组,例如 ['https://www.googleapis.com/auth/drive'],在这种情况下,意味着“APPName 需要管理(crud)您的文件”
    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 使用的 url 用于元数据请求,上传您更喜欢https://www.googleapis.com/upload/drive/v2/files,更多文档请访问https://developers.google.com/drive/v3/reference/files#resource-representations

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

    【讨论】:

    • 非常感谢您...非常感谢您。我会尽快尝试。但是是的,我认为我已经在谷歌控制台中以正确的方式进行了配置
    • 不客气,当然很幸运,因为我正在为一个项目工作,而且我已经面临这部分的所有问题。如果需要,我有一个工作角度服务
    • 哦,老板……你太棒了。如果你能给我一个链接到一个使用谷歌驱动器显示、下载和上传文件的工作应用程序的示例代码,那将会很棒,因为我还有一些其他问题。特别是如果是一个离子项目。无论如何,非常感谢
    • 嗨,Jean,我可以把我的应用程序和代码发给你吗?因为我无法理解我的错误。很抱歉打扰您,但您是唯一回答我的人。
    • 这是一个要点,您可以在其中找到使用 $cordovaOauth 对 google api 进行身份验证的工作示例,您将准备好使用 access_token 进行进一步的 API 调用,如果令牌已过期,则再次使用 authenticate() 方法. gist.github.com/jeansaigne/…
    猜你喜欢
    • 2013-10-20
    • 2018-09-12
    • 2013-07-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-01-13
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多