标签: google-api-java-client

使用google-api-java-client的2脚OAuth

有谁知道如何使用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)

有任何想法吗?提前致谢.

java oauth google-api 2-legged google-api-java-client

4
推荐指数
1
解决办法
4531
查看次数

使用Google Drive API制作文件的本地副本

我想使用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

4
推荐指数
1
解决办法
554
查看次数

如何在Google Analytics中应用多个过滤器

如何在Google Analytics中过滤多个维度.

以下工作的下一步:

 .setFilters("ga:userType==anonymous").setFilters( "ga:dimension3==1234")
 .setFilters("ga:userType==anonymous","ga:dimension3==1234") 
Run Code Online (Sandbox Code Playgroud)

第二个给出错误.

java google-api google-analytics-api google-api-java-client

4
推荐指数
1
解决办法
4208
查看次数

google-oauth-client-jetty 无法在 Tomcat 7 上运行

当我使用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[]]

这是什么原因呢?谢谢。

tomcat jetty google-api-java-client

4
推荐指数
1
解决办法
816
查看次数

java.lang.NoSuchMethodError: com.google.api.client.http.HttpTransport.isMtls()Z

我有一个使用 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

4
推荐指数
2
解决办法
2813
查看次数

无法使用新的Drive API检索Google云端硬盘文件和文件夹

我试图从我的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)

android google-api-java-client google-drive-api

3
推荐指数
1
解决办法
6806
查看次数

使用Google API将变量从AngularJS服务传递到控制器?

我正在尝试使用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-api google-api-java-client angularjs google-oauth

3
推荐指数
1
解决办法
1792
查看次数

Google Drive API - 太慢了.

我刚刚开始使用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

3
推荐指数
1
解决办法
2267
查看次数

从Android上传到Google云端存储的速度缓慢下降5 kbps

我正在编写一个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)

android google-api-java-client google-cloud-storage

3
推荐指数
1
解决办法
1549
查看次数

在Android中使用Google Cloud Storage JSON api

我想Google Cloud Storage从我的Android应用程序上传图像.为此,我搜索并发现GCS JSON Api提供此功能.我做了大量针对Android示例的研究,展示了它的用途.在开发人员站点上,他们提供了仅支持java的代码示例.我不知道如何在Android中使用该API.我提到了这个这个链接,但无法理解.请指导我如何使用这个api与Android应用程序.

android json google-api-java-client google-cloud-storage

3
推荐指数
1
解决办法
7157
查看次数