我正在尝试构建一个应用程序,我想从谷歌驱动器下载视频文件并将其保存到我的应用程序文件夹。现在我已经按照所有步骤授权应用程序进入谷歌控制台,我正在使用谷歌的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)
例外。
我使用的是错误的范围吗?请提供任何形式的帮助!!
答案 0 :(得分:0)
根据您提供的documentation,请注意下载文件要求用户至少具有读取权限。此外,您的应用必须获得授权,其范围允许读取文件内容。
此link中还说明https://www.googleapis.com/auth/userinfo.profile
已被弃用,必须替换为等效的profile范围。
注意:此范围已弃用;但是,它将被维护并保持可用于向后兼容。有关此更改的说明,请参阅Migrating to Google+ Sign-In。