2015-02-20 3 views
0

Этот вопрос относится к API Mendeley. http://dev.mendeley.com/Mendeley Неявный тип auth, не возвращающий полные данные

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

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

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

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

+0

Ваш вопрос не ясен. Пожалуйста, отредактируйте свой вопрос. Вы можете найти информацию о том, как составить хороший вопрос [здесь] (http://stackoverflow.com/help/how-to-ask) – Theresa

+0

Спасибо за комментарий. Надеюсь, теперь мой вопрос более ясен. – adventuredev

ответ

0

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

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

Вы должны указать «вид = нагрудник» на конечную точку вызова.

Вот очень грубый пример работал только с помощью 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()); 

    } 

}