使用android中的授权将视频文件从Google云端硬盘下载到特定文件夹

时间:2017-03-02 11:17:04

标签: android google-oauth2 google-drive-android-api

我正在尝试构建一个应用程序,我想从谷歌驱动器下载视频文件并将其保存到我的应用程序文件夹。现在我已经按照所有步骤授权应用程序进入谷歌控制台,我正在使用谷歌的this指令下载视频。

这就是我使用googleclient对象的方式,

mGoogleApiClient = new GoogleApiClient.Builder(this)
                    .addApi(Drive.API)
                    .addApi(Plus.API)
                    .addScope(Drive.SCOPE_FILE)
                    .addScope(Drive.SCOPE_APPFOLDER)
                    .addConnectionCallbacks(this)
                    .addOnConnectionFailedListener(this)
                    .build();

这是我的Asynctask代码,

private class fetchVideo extends AsyncTask<String,String,String>
    {

        @Override
        protected String doInBackground(String... params) {
            URL url = null;
            int count;
            try {
                url = new URL(params[0]);
                HttpURLConnection conn = (HttpURLConnection) url.openConnection();
                conn.setRequestMethod("GET");
                conn.setRequestProperty("Authorization", "Bearer " + GoogleAuthUtil.getToken(yoActivity.this, accountName, Constants.SCOPE));
                conn.setDoInput(true);
                // Starts the query
                conn.connect();
                int responseCode = conn.getResponseCode();
                //you will recive the file in input stream
                File sdcard = Environment.getExternalStorageDirectory();
                File file = new File(sdcard, "/VideoLooperFolder/randomVid.mp4");

                FileOutputStream fileOutput = new FileOutputStream(file);
                InputStream inputStream = conn.getInputStream();

                byte[] buffer = new byte[1024];
                int bufferLength = 0;

                while ( (bufferLength = inputStream.read(buffer)) > 0 ) {
                    fileOutput.write(buffer, 0, bufferLength);
                }
                fileOutput.close();

            } catch (IOException | GoogleAuthException e) {
                e.printStackTrace();
            }
            return null;
        }
    }

我正在使用此范围,SCOPE = "https://www.googleapis.com/auth/userinfo.profile"。但我得到GoogleAuthUtil.getToken(Unknown Source)例外。

我使用的是错误的范围吗?请提供任何形式的帮助!!

1 个答案:

答案 0 :(得分:0)

根据您提供的documentation,请注意下载文件要求用户至少具有读取权限。此外,您的应用必须获得授权,其范围允许读取文件内容。

link中还说明https://www.googleapis.com/auth/userinfo.profile已被弃用,必须替换为等效的profile范围。

  

注意:此范围已弃用;但是,它将被维护并保持可用于向后兼容。有关此更改的说明,请参阅Migrating to Google+ Sign-In