2013-11-28 4 views
0

Я пытаюсь запустить Quick start для Java с API-интерфейсом Google+ и получить ошибку 404 Не найдена, и я не могу понять, почему это происходит. Мне нужен этот api для предварительного заполнения кругов для клиента.Google+ Domains API 404 Не найдена ошибка

Ссылка на краткое руководство: https://developers.google.com/+/domains/quickstart/java

Я следовал инструкциям, и я могу разрешить, но когда я хочу что-то сделать с API я сразу получить 404 Not Found.

Поскольку авторизация уже завершена, я ожидаю, что API-интерфейс правильно настроен с использованием учетной записи службы с файлом закрытого ключа. Я использую доменную делегацию и выступаю в качестве пользователя [email protected]

Код:

/* 
* Copyright 2013 Google Inc. All Rights Reserved. 
* 
* Licensed under the Apache License, Version 2.0 (the "License"); 
* you may not use this file except in compliance with the License. 
* You may obtain a copy of the License at 
* 
*  http://www.apache.org/licenses/LICENSE-2.0 
* 
* Unless required by applicable law or agreed to in writing, software 
* distributed under the License is distributed on an "AS IS" BASIS, 
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 
* See the License for the specific language governing permissions and 
* limitations under the License. 
*/ 

package com.google.plus.samples.quickstart.domains; 

import com.google.api.client.googleapis.auth.oauth2.GoogleCredential; 
import com.google.api.client.googleapis.json.GoogleJsonResponseException; 
import com.google.api.client.http.HttpResponseException; 
import com.google.api.client.http.HttpTransport; 
import com.google.api.client.http.javanet.NetHttpTransport; 
import com.google.api.client.json.JsonFactory; 
import com.google.api.client.json.jackson.JacksonFactory; 
import com.google.api.services.plusDomains.PlusDomains; 
import com.google.api.services.plusDomains.model.Acl; 
import com.google.api.services.plusDomains.model.Activity; 
import com.google.api.services.plusDomains.model.PlusDomainsAclentryResource; 

import java.io.IOException; 
import java.security.GeneralSecurityException; 
import java.util.ArrayList; 
import java.util.Arrays; 
import java.util.List; 


/** 
* Simple program to demonstrate the Google+ Domains API. 
* 
* This program shows how to authenticate an app for domain-wide delegation and how 
* to complete an activities.insert API call. For details on how to authenticate on 
* a per-user basis using OAuth 2.0, or for examples of other API calls, please see 
* the documentation at https://developers.google.com/+/domains/. 
* 
* @author [email protected] (Joanna Smith) 
*/ 
public class DomainDelegation { 
    /** 
    * Update SERVICE_ACCOUNT_EMAIL with the email address of the service account for the client ID 
    * created in the developer console. 
    */ 
    private static final String SERVICE_ACCOUNT_EMAIL = "[email protected]"; 

    /** 
    * Update SERVICE_ACCOUNT_PKCS12_FILE_PATH with the file path to the private key file downloaded 
    * from the developer console. 
    */ 
    private static final String SERVICE_ACCOUNT_PKCS12_FILE_PATH = 
     "/path/to/xxx-privatekey.p12"; 

    /** 
    * Update USER_EMAIL with the email address of the user within your domain that you would like 
    * to act on behalf of. 
    */ 
    private static final String USER_EMAIL = "[email protected]"; 

    /** 
    * plus.me and plus.stream.write are the scopes required to perform the tasks in this quickstart. 
    * For a full list of available scopes and their uses, please see the documentation. 
    */ 
    private static final List<String> SCOPE = Arrays.asList(
      "https://www.googleapis.com/auth/plus.me", 
      "https://www.googleapis.com/auth/plus.circles.read", 
      "https://www.googleapis.com/auth/plus.circles.write", 
      "https://www.googleapis.com/auth/plus.media.upload", 
      "https://www.googleapis.com/auth/plus.stream.read", 
      "https://www.googleapis.com/auth/plus.stream.write"); 


    /** 
    * Builds and returns a Plus service object authorized with the service accounts 
    * that act on behalf of the given user. 
    * 
    * @return Plus service object that is ready to make requests. 
    * @throws GeneralSecurityException if authentication fails. 
    * @throws IOException if authentication fails. 
    */ 
    private static PlusDomains authenticate() throws GeneralSecurityException, IOException { 

    System.out.println(String.format("Authenticate the domain for %s", USER_EMAIL)); 

    HttpTransport httpTransport = new NetHttpTransport(); 
    JsonFactory jsonFactory = new JacksonFactory(); 

    // Setting the sub field with USER_EMAIL allows you to make API calls using the special keyword 
    // 'me' in place of a user id for that user. 
    GoogleCredential credential = new GoogleCredential.Builder() 
     .setTransport(httpTransport) 
     .setJsonFactory(jsonFactory) 
     .setServiceAccountId(SERVICE_ACCOUNT_EMAIL) 
     .setServiceAccountScopes(SCOPE) 
     .setServiceAccountUser(USER_EMAIL) 
     .setServiceAccountPrivateKeyFromP12File(
      new java.io.File(SERVICE_ACCOUNT_PKCS12_FILE_PATH)) 
     .build(); 

    // Create and return the Plus service object 
    PlusDomains service = new PlusDomains.Builder(httpTransport, jsonFactory, credential).build(); 
    return service; 
    } 

    /** 
    * Create a new post on behalf of the user associated with the credential object of the service, 
    * restricted to the domain. 
    * 
    * @param service Plus service object that is ready to make requests. 
    * @throws IOException if the insert operation fails or if authentication fails. 
    * @throws GeneralSecurityException if authentication fails. 
    */ 
    public static void main(String[] args) throws Exception { 
    try{ 
     try { 
      // Create an authorized API client 
      PlusDomains service = authenticate(); 
      System.out.println(service.getRootUrl()); 

      // Set the user's ID to 'me': requires the plus.me scope 
      String userId = "me"; 
      String msg = "Happy Monday! #caseofthemondays"; 


      System.out.println("Inserting activity"); 

      // Create the audience of the post 
      PlusDomainsAclentryResource res = new PlusDomainsAclentryResource(); 
      // Share to the domain 
      res.setType("domain"); 

      List<PlusDomainsAclentryResource> aclEntries = new ArrayList<PlusDomainsAclentryResource>(); 
      aclEntries.add(res); 

      Acl acl = new Acl(); 
      acl.setItems(aclEntries); 
      // Required, this does the domain restriction 
      acl.setDomainRestricted(true); 

      Activity activity = new Activity() 
       .setObject(new Activity.PlusDomainsObject().setOriginalContent(msg)) 
       .setAccess(acl); 

      activity = service.activities().insert(userId, activity).execute(); 

      System.out.println(activity); 

    } catch (GoogleJsonResponseException e) { 
     // message already includes parsed response 
     System.err.println(e.getMessage()); 
    } catch (HttpResponseException e) { 
     // message doesn't include parsed response 
     System.err.println(e.getMessage()); 
     //System.err.println(e.getResponse().parseAsString()); 
    } 
    } catch (Throwable t) { 
    t.printStackTrace(); 
    } 
    } 
} 

Log сообщение:

Authenticate the domain for [email protected] 
Nov 27, 2013 2:21:18 PM com.google.api.client.googleapis.services.AbstractGoogleClient   <init> 
WARNING: Application name is not set. Call Builder#setApplicationName. 
Inserting activity 
404 Not Found 
Not Found 

Кто-нибудь знает, почему я получаю 404 Not Found? Я запускаю этот скрипт в бесплатном тестовом домене для корпоративных учетных записей.

ответ

0
  1. Вы можете проверить, что вы включили API Доменов Google+ в консоли разработчиков.

  2. Вы можете убедиться, что у вас есть последняя версия QuickStart от GitHub - произошло изменение переименовать API для plusDomains/v1 от плюс/v1domains, которые можно было бы попасть в вас, если у вас есть старые сборки.

  3. Вы можете проверить Google+ включена в домен тестировании

  4. Наконец, вы могли бы включить в свой вопрос более подробно по запросу и ответ - если вы можете зарегистрировать их, и включают в себя, что, это может Помогите!

Смежные вопросы