Как аутентифицировать Yelp API с помощью Java

обзор

  • Идентификатор клиента: cRL42oGaCxq0BQ_mFTXbyg
  • Тип проблемы : Аутентификация API
  • Описание: Попытка использовать API в Java в Android Studio
  • Платформа: Android

Описание

Приношу извинения. Я новичок в этом, и я видел сообщения, подобные этому, но я еще не смог заставить это работать. Кажется, я не могу аутентифицировать свой API. Кто-нибудь может мне помочь? Я перепробовал многое из того, что было предложено в Интернете, а также то, что сайт просил сделать. Может быть, я что-то https://www.yelp.com/developers/documentation/v3/authentication

Вот мои шаги по использованию Postman для авторизации API:

1) В раскрывающемся списке панели URL я изменил с "GET" на "POST". 2) В панели URL я написал " https://api.yelp.com/oauth2/token ". 3) На вкладке "Авторизация": как Тип, я установил его как "Без аутентификации" 4) На вкладке "Тело" я выбрал переключатель: "x-www-form-urlencoded" 5) Затем я установил следующие ключи:

Key                             Value 
=============================================================
client_id                     cRL42oGaCxq0BQ_mFTXbyg
client_secret              5TN2CQ55SP6V7OijXtwnFYkt0...
grant_type                 client_credentials

6) Затем я нажал "Отправить", который вернулся

{
    "access_token": "YAL0kM_2qURGYX25nFn1B6re_zc6yQ...",
    "expires_in": 635592747,
    "token_type": "Bearer"
}

7) После этого я вернулся на вкладку "Заголовки" и написал в

Key                             Value
===========================================================
Authorization              Bearer YAL0kM_2qURGYX25nFn1B6re_zc6yQTVQ​...​
Content-Type               application/x-www-form-urlencoded​​​     <---- This section was already here

8. Затем я снова нажал "ОТПРАВИТЬ"

Я не уверен, должен ли я выполнять какую-либо другую форму OAuth внутри моего кода или нет, и как мне это сделать

Конечная точка

https://api.yelp.com/oauth2/token

Параметры или образец запроса

package com.nicolasshu.yelptest;

import com.yelp.clientlib.connection.YelpAPI;
import com.yelp.clientlib.connection.YelpAPIFactory;
import com.yelp.clientlib.entities.Business;
import com.yelp.clientlib.entities.SearchResponse;

import java.io.IOException;
import java.util.HashMap;
import java.util.Map;

import retrofit2.Call;
import retrofit2.Response;

/**
 * Created by nickshu on 11/28/17.
 */

public class TestYelp {


    public static void main(String[] args) throws IOException {
        String client_id = "cRL42oGaCxq0BQ_mFTXbyg";
        String client_secret = "5TN2CQ55SP6V7OijXtwnFYkt0bF88BbVx67txzxr...";
        String endpoint = "https://api.yelp.com/oauth2/token";
        String access_token = "YAL0kM_2qURGYX25nFn1B6re_zc6yQTVQUnV...";
        String token_type = "Bearer";
        // Expiration: January 18, 2038

        YelpAPIFactory apiFactory = new YelpAPIFactory(client_id,client_secret,token_type,access_token);
            System.out.println(apiFactory);
        YelpAPI yelpAPI = apiFactory.createAPI();

        Map<String,String> params = new HashMap<>();

        // Inputting general parameters
        params.put("term","food");
        params.put("limit","3");
        // locale params
        params.put("lang", "fr");


        Call<Business> call = yelpAPI.getBusiness("yelp-san-francisco");
        Response<Business> response = call.execute();
        // ##########################################
        // Here is where the Exception occurs
    }
}

Дополнительная информация - Сообщение об ошибке

Exception in thread "main" com.yelp.clientlib.exception.exceptions.InvalidOAuthCredentials: Forbidden
    at com.yelp.clientlib.exception.ErrorHandlingInterceptor.parseError(ErrorHandlingInterceptor.java:79)
    at com.yelp.clientlib.exception.ErrorHandlingInterceptor.intercept(ErrorHandlingInterceptor.java:45)
    at okhttp3.RealCall$ApplicationInterceptorChain.proceed(RealCall.java:187)
    at se.akerfeldt.okhttp.signpost.SigningInterceptor.intercept(SigningInterceptor.java:46)
    at okhttp3.RealCall$ApplicationInterceptorChain.proceed(RealCall.java:187)
    at okhttp3.RealCall.getResponseWithInterceptorChain(RealCall.java:160)
    at okhttp3.RealCall.execute(RealCall.java:57)
    at retrofit2.OkHttpCall.execute(OkHttpCall.java:174)
    at com.nicolasshu.yelptest.TestYelp.main(TestYelp.java:44)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:498)
    at com.intellij.rt.execution.application.AppMainV2.main(AppMainV2.java:131)

0 ответов

Другие вопросы по тегам