Неявный тип аутентификации Mendeley не возвращает полные данные

Этот вопрос относится к Mendeley API. http://dev.mendeley.com/

При использовании неявного типа аутентификации: http://dev.mendeley.com/reference/topics/authorization_overview.html

Кажется, я получаю только подмножество данных для данного документа. Например, кажется, что поле «веб-сайты» не отображается, даже если оно заполнено.

Я сталкиваюсь с этой проблемой только при использовании неявного типа аутентификации, а не других типов аутентификации.

Сталкивались ли с этим другие пользователи Mendeley API? Это похоже на ошибку.


person adventuredev    schedule 20.02.2015    source источник
comment
Ваш вопрос не ясен. Пожалуйста, отредактируйте свой вопрос. Информацию о том, как составить хороший вопрос, можно найти здесь   -  person Theresa    schedule 20.02.2015
comment
Спасибо за комментарий. Надеюсь, теперь мой вопрос более ясен.   -  person adventuredev    schedule 22.02.2015


Ответы (1)


Определенные поля возвращаются в зависимости от указанного вами представления документа. Это было реализовано, чтобы иметь возможность поддерживать потребности нескольких клиентов, например. мобильным клиентам требуются меньшие наборы данных, чем более крупным веб-клиентам.

Пожалуйста, прочитайте - http://dev.mendeley.com/methods/#document-views

Вам необходимо указать «view=bib» при вызове конечной точки.

Вот очень грубый рабочий пример, использующий только Java

@Test
public void testImplicitGrantFlow() {

    String random = RandomStringUtils.random(5);

    String query = String.format(
            "?client_id=%s&redirect_uri=%s&response_type=token&scope=all&state=%s", IMPLICIT_GRANT_FLOW_CLIENT_ID, "http://localhost:5000/callback", random);

    ClientResponse authorise = jerseyClient.resource(AUTH_URL + query)
            .accept(MediaType.APPLICATION_JSON)
            .get(ClientResponse.class);

    assertThat(authorise.getStatus()).isEqualTo(200);

    ClientResponse postFormDataResponse = jerseyClient.resource(AUTH_URL + query)
            .entity("[email protected]&password=spuds", MediaType.APPLICATION_FORM_URLENCODED_TYPE)
            .accept(MediaType.APPLICATION_JSON)
            .post(ClientResponse.class);
    assertThat(postFormDataResponse.getStatus()).isEqualTo(302);

    String queryString = postFormDataResponse.getHeaders().get("Location").get(0);

    Matcher matcher = ACCESS_TOKEN_REGEX.matcher(queryString);
    matcher.find();
    String accessToken = matcher.group(1);

    matcher = STATE_REGEX.matcher(queryString);
    matcher.find();
    String state = matcher.group(1);

    assertNotNull(accessToken);
    assertThat(queryString).contains(accessToken);

    assertNotNull(state);
    assertThat(queryString).contains(state);

    ClientResponse response = jerseyClient.resource(OAuthBaseClass.DOCUMENTS_URL)
            .header("Authorization", "Bearer " + accessToken)
            .get(ClientResponse.class);
    assertThat(response.getStatus()).isEqualTo(200);

    List<Document> documents = response.getEntity(new GenericType<List<Document>>() {
    });
    assertThat(documents.size()).isGreaterThan(0);

    ListIterator<Document> documentListIterator = documents.listIterator();
    while (documentListIterator.hasNext()) {
        Document next = documentListIterator.next();
          System.out.println(next.getTitle());
          System.out.println(next.getWebsites());

    }

}
person MendeleyStack    schedule 23.02.2015