2011-01-23 2 views
0

Я только что применил API-интерфейс инструментария Google для переводчиков с помощью библиотеки google-api-java-client. Проблема заключается в том, что я могу аутентифицироваться с помощью clientLogin со старой клиентской библиотекой gdata, но я не могу это сделать с помощью google-api-java-client.API-интерфейс переводчика Google - google-api-java-client Вход для клиента 403 Запрещен

Это довольно просто, но я все еще получаю запрещенный ответ 403. Запросы (старые/новые) почти одинаковы, но только токены auth различаются. Google просто посылает мне токен, который я не могу аутентифицировать с помощью ...

Пожалуйста, помогите, я потратил час на всю реализацию модели, а затем на 3 часа этого ада.

public class GttClient { 
public static void main(String[] args) { 

    Debug.enableLogging(); 
    HttpTransport transport = setUpTransport(); 

    try { 
    authenticateWithClientLogin(transport); 
    printResults(executeGet(transport, GttUrl.forDocuments())); 
    } catch (IOException e) { 
    e.printStackTrace(); 
    } 
} 

private static HttpTransport setUpTransport() { 
    HttpTransport transport = GoogleTransport.create(); 
    GoogleHeaders headers = (GoogleHeaders) transport.defaultHeaders; 
    headers.setApplicationName("Google-PredictionSample/1.0"); 
    headers.gdataVersion = "2.0"; 
    AtomParser parser = new AtomParser(); 
    parser.namespaceDictionary = Namespace.DICTIONARY; 
    transport.addParser(parser); 
    return transport; 
} 

private static void authenticateWithClientLogin(HttpTransport transport) 
    throws IOException { 
    ClientLogin clientLogin = new ClientLogin(); 
    clientLogin.authTokenType = "gtrans"; 
    clientLogin.accountType = "HOSTED_OR_GOOGLE"; 
    clientLogin.username = "[email protected]"; 
    clientLogin.password = "password"; 
    clientLogin.authenticate().setAuthorizationHeader(transport); 
} 

public static Feed executeGet(HttpTransport transport, GttUrl url) 
    throws IOException { 

    HttpRequest request = transport.buildGetRequest(); 
// url.fields = GData.getFieldsFor(Feed.class); 
    request.url = url; 

    return request.execute().parseAs(Feed.class); 
} 

}

public class GttUrl extends GoogleUrl { 

static final String ROOT_URL = "https://translate.google.com/toolkit/feeds"; 

@Key("sharedwith") 
public String sharedwith; 

@Key("onlydeleted") 
public String onlydeleted; 

@Key("scope") 
public String scope; 

public GttUrl(String url) { 
    super(url); 
    if (Debug.ENABLED) { 
    this.prettyprint = true; 
    } 
} 

public static GttUrl forRoot() { 
    return new GttUrl(ROOT_URL); 
} 

public static GttUrl forDocuments() { 
    GttUrl result = forRoot(); 
    result.pathParts.add("documents"); 
    return result; 
} 

public static GttUrl forTranslMemories() { 
    GttUrl result = forRoot(); 
    result.pathParts.add("tm"); 
    return result; 
} 

public static GttUrl forGlossaries() { 
    GttUrl result = forRoot(); 
    result.pathParts.add("glossary"); 
    return result; 
} 
} 

ответ

2

Итак, я осуществил переводчик инструментарий API в течение часа, а затем я получил застрял в течение 4-х часов авторизации ClientLogin ....

собственно настройки из запрос

gdataVersion = "1.0"; 
and GET request 

К сожалению, во время попытки у меня было либо

1.0 and POST 

или

2.0 and GET 

Это означает, что gdataVersion = "2"; работает только для API-интерфейсов, для которых "новый" клиент уже реализованных ... AFAIK

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

  • Нет связанных вопросов^_^