有谁知道如何使用google-api-java-client使用2脚OAuth?我正在尝试访问Google Apps Provisioning API以获取特定域的用户列表.
以下不起作用
HttpTransport transport = GoogleTransport.create();
GoogleHeaders headers = (GoogleHeaders) transport.defaultHeaders;
headers.setApplicationName(APPLICATION_NAME);
headers.gdataVersion = GDATA_VERSION;
OAuthHmacSigner signer = new OAuthHmacSigner();
signer.clientSharedSecret = CONSUMER_SECRET;
OAuthParameters oauthParameters = new OAuthParameters();
oauthParameters.version = OAUTH_VERSION;
oauthParameters.consumerKey = CONSUMER_KEY;
oauthParameters.signer = signer;
oauthParameters.signRequestsUsingAuthorizationHeader(transport);
Run Code Online (Sandbox Code Playgroud)
我收到"com.google.api.client.http.HttpResponseException:401 Unknown authorization header".标题看起来像这样
OAuth oauth_consumer_key="...", oauth_nonce="...", oauth_signature="...", oauth_signature_method="HMAC-SHA1", oauth_timestamp="...", oauth_version="1.0"
Run Code Online (Sandbox Code Playgroud)
我也尝试过没有成功
GoogleOAuthDomainWideDelegation delegation = new GoogleOAuthDomainWideDelegation();
delegation.requestorId = REQUESTOR_ID;
delegation.signRequests(transport, oauthParameters);
Run Code Online (Sandbox Code Playgroud)
有任何想法吗?提前致谢.
我想使用Google Drive android Api在Google云端硬盘上制作".ppt"文件的本地副本(外部存储).
我正在读一个字节并将其写入我的本地文件.但是当我试图打开它时显示该文件已损坏.请帮我解决我的问题.
final DriveFile file = Drive.DriveApi.getFile(getClient(), fileid);
final Metadata[] metadata = new Metadata[1];
file.getMetadata(getClient())
.setResultCallback(new ResultCallback<DriveResource.MetadataResult>() {
@Override
public void onResult(DriveResource.MetadataResult metadataResult) {
metadata[0] = metadataResult.getMetadata();
L.b(EditorWindow.this, metadata[0].getMimeType(), 0);
}
});
file.open(getClient(), DriveFile.MODE_READ_ONLY, null)
.setResultCallback(new ResultCallback<DriveApi.DriveContentsResult>() {
@Override
public void onResult(DriveApi.DriveContentsResult result) {
if (!result.getStatus().isSuccess()) {
L.c("Error in creating new file");
return;
}
DriveContents contents = result.getDriveContents();
String filename = metadata[0].getTitle();
File localFile = new File(Environment.getExternalStorageDirectory(), filename);
OutputStream out = null;
InputStream in = null;
try …Run Code Online (Sandbox Code Playgroud) android google-api google-api-java-client google-drive-android-api
如何在Google Analytics中过滤多个维度.
以下工作的下一步:
.setFilters("ga:userType==anonymous").setFilters( "ga:dimension3==1234")
.setFilters("ga:userType==anonymous","ga:dimension3==1234")
Run Code Online (Sandbox Code Playgroud)
第二个给出错误.
当我使用Google OAuth2时,我需要使用该库
<dependency>
<groupId>com.google.oauth-client</groupId>
<artifactId>google-oauth-client-jetty</artifactId>
<version>1.23.0</version>
</dependency>
Run Code Online (Sandbox Code Playgroud)
但是,当我尝试在 Tomcat 7 上运行我的 web 应用程序时,服务器无法启动并抱怨以下错误:
2017 年 10 月 14 日 9:26:57 PM org.apache.catalina.core.ContainerBase startInternal 严重:启动时子容器失败 java.util.concurrent.ExecutionException:org.apache.catalina.LifecycleException:无法启动组件 [StandardEngine [Tomcat].StandardHost[localhost].StandardContext[]]
这是什么原因呢?谢谢。
我有一个使用 java8 部署在 appengine 上的应用程序。
最近,当我尝试部署时,我在运行时收到此错误:
Uncaught exception from servlet
java.lang.NoSuchMethodError: com.google.api.client.http.HttpTransport.isMtls()Z
at com.google.api.services.storage.Storage$Builder.chooseEndpoint(Storage.java:11151)
at com.google.api.services.storage.Storage$Builder.<init>(Storage.java:11184)
at com.google.cloud.storage.spi.DefaultStorageRpc.<init>(DefaultStorageRpc.java:105)
at com.google.cloud.storage.StorageOptions$DefaultStorageRpcFactory.create(StorageOptions.java:49)
at com.google.cloud.storage.StorageOptions$DefaultStorageRpcFactory.create(StorageOptions.java:43)
at com.google.cloud.ServiceOptions.getRpc(ServiceOptions.java:482)
at com.google.cloud.storage.StorageImpl.<init>(StorageImpl.java:93)
at com.google.cloud.storage.StorageOptions$DefaultStorageFactory.create(StorageOptions.java:39)
at com.google.cloud.storage.StorageOptions$DefaultStorageFactory.create(StorageOptions.java:33)
at com.google.cloud.ServiceOptions.getService(ServiceOptions.java:469)
Run Code Online (Sandbox Code Playgroud)
这是我的pom.xml:
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<packaging>war</packaging>
<version>1.1-SNAPSHOT</version>
<groupId>my.com.myapp</groupId>
<artifactId>myapp</artifactId>
<repositories>
<repository>
<id>local-maven-repo</id>
<url>file:///${project.basedir}/local-maven-repo</url>
</repository>
</repositories>
<!-- [START set_versions] -->
<properties>
<appengine.sdk.version>1.9.46</appengine.sdk.version>
<google-api-client.version>1.21.0</google-api-client.version>
<objectify.version>5.1.5</objectify.version>
<guava.version>18.0</guava.version>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>
<prerequisites>
<maven>3.1.0</maven>
</prerequisites>
<dependencies>
<dependency>
<groupId>com.google.appengine</groupId>
<artifactId>appengine-api-1.0-sdk</artifactId>
<version>${appengine.sdk.version}</version>
</dependency>
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>servlet-api</artifactId>
<type>jar</type>
<version>2.5</version>
<scope>provided</scope> …Run Code Online (Sandbox Code Playgroud) java google-app-engine google-api-java-client google-cloud-storage
我试图从我的Android应用程序中获取Google云端硬盘文件夹中的文件列表,但到目前为止都没有成功.我正在使用google-api-drive-v1-rev4-java-1.6.0-beta和google-api-client-1.9.0.我还在http://code.google.com/p/google-api-java-client/wiki/Android上的示例中构建类似于calendar-android-sample和tasks-android-sample的代码.
我似乎无法找到如何使用files()来获取文件夹列表甚至我想要的文件夹的ID.tasks-android-sample在get()方法中使用'@default'来获取任务列表.我将在get方法中首先获取文件夹列表,搜索我的文件夹,获取id,然后获取该文件夹中的文件列表?
AsyncLoadDocs.java :(注意:我正在使用getFields()来查看Get对象是否包含任何元数据,此时这些元数据不包含.)
package com.mysite.myapp.docs;
import com.google.api.services.drive.Drive;
import com.google.api.services.drive.Drive.Files;
import com.google.api.services.drive.Drive.Files.Get;
import com.google.api.services.drive.model.File;
import android.app.ProgressDialog;
import android.os.AsyncTask;
import android.util.Log;
import android.widget.ArrayAdapter;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
/**
* Asynchronously load the docs with a progress dialog.
*
* @author ms
*/
class AsyncLoadDocs extends AsyncTask<Void, Void, List<String>> {
private static final String TAG = "AsyncLoadDocs";
private final GDocsSync gDocsSync;
private final ProgressDialog dialog;
private final Drive entry = null;
private com.google.api.services.drive.Drive service;
AsyncLoadDocs(GDocsSync gDocsSync) …Run Code Online (Sandbox Code Playgroud) 我正在尝试使用Google API Javascript客户端在我的应用上使用Google登录,然后访问用户的电子邮件地址和联系人.我将它与AngularJS结合起来,我已经读过,最好将它作为自己的服务.
以下是目前服务的代码:
.service('googleLogin', ['$http', '$rootScope', function ($http, $rootScope) {
var clientId = '{MY CLIENT KEY}',
apiKey = '{MY API KEY}',
scopes = 'https://www.googleapis.com/auth/userinfo.email https://www.google.com/m8/feeds',
domain = '{MY COMPANY DOMAIN}';
this.handleClientLoad = function () {
// Step 2: Reference the API key
gapi.client.setApiKey(apiKey);
gapi.auth.init(function () { });
window.setTimeout(checkAuth, 1);
};
this.checkAuth = function() {
gapi.auth.authorize({ client_id: clientId, scope: scopes, immediate: true, hd: domain }, this.handleAuthResult );
};
this.handleAuthResult = function(authResult) {
if (authResult && !authResult.error) {
gapi.client.load('oauth2', 'v2', function …Run Code Online (Sandbox Code Playgroud) 我刚刚开始使用Google Drive API.我有一个问题,它太慢了.我使用文档中的方法.例如:
List<File> getFilesByParrentId(String Id, Drive service) throws IOException {
Children.List request = service.children().list(Id);
ChildList children = request.execute();
List<ChildReference> childList = children.getItems();
File file;
List<File> files = new ArrayList<File>();
for (ChildReference child : childList) {
file = getFilebyId(child.getId(), service);
if (file == null) {
continue;
} else if (file.getMimeType().equals(FOLDER_IDENTIFIER)) {
System.out.println(file.getTitle() + " AND "
+ file.getMimeType());
files.add(file);
}
}
return files;
}
private File getFilebyId(String fileId, Drive service) throws IOException {
File file = service.files().get(fileId).execute();
if (file.getExplicitlyTrashed() == …Run Code Online (Sandbox Code Playgroud) google-app-engine google-api google-api-java-client google-drive-api google-drive-realtime-api
我正在编写一个Android应用程序,并希望使用Google云端存储来存储潜在的大型媒体文件.我正在使用JSON API的Java客户端库:com.google.api.services.storage.
我的问题是表现.我确定我一定做错了.我有文件上传工作,但它几乎可笑很慢.传输一个1.5 MB的图像文件大约需要5分钟,所以这就像5 kbps,这对我的应用来说是无法使用的.我已为我的应用启用了结算功能,但我在免费套餐上.当然这不是预期的性能水平?我正在宽带wifi上的Galaxy S4上测试这个.我正在使用服务帐户OAUth客户端密钥来访问GCS.
我尝试过使用和不使用gzip编码,使用和不使用直接(不可恢复)上传,并使用不同的块大小 - 默认,最小,最小倍数等.我在所有情况下都得到类似的结果.这是我的上传功能:
public void uploadFile(String bucketName, String filePath, String mimeType, String gcsFilename, IOProgress ioProgress)
throws IOException {
StorageObject object = new StorageObject();
object.setBucket(bucketName);
File file = new File(filePath);
Long fileSize = file.length();
Log.d(TAG, "uploadFile START: " + bucketName + ":" + gcsFilename + " -> " + filePath);
try (InputStream stream = new FileInputStream(file)) {
InputStreamContent content = new InputStreamContent(mimeType,
stream);
Storage.Objects.Insert insert = storage.objects().insert(
bucketName, null, content);
insert.setName(gcsFilename);
insert.getMediaHttpUploader().setDisableGZipContent(true); // this seems …Run Code Online (Sandbox Code Playgroud) google-api ×5
android ×4
java ×3
2-legged ×1
angularjs ×1
google-oauth ×1
jetty ×1
json ×1
oauth ×1
tomcat ×1