Получение токена нулевого доступа для JRaw - PullRequest
0 голосов
/ 02 октября 2018

Насколько я понимаю, OAuthHelper в Jraw должен автоматически генерировать токен доступа, когда я запускаю этот кусок кода, но это не так.Что я делаю неправильно?Я помещаю случайное значение в поле Платформа приложения.Имеет ли это значение?

public static void main(String[] args) {
    UserAgent userAgent = new UserAgent(
            "appPlatform",
           "appName",
            "version",
            "userName");

    Credentials credentials = Credentials.script(
           "userName",
            "password",
            "clientId",
            "clientSecret"
    );

    NetworkAdapter adapter = new OkHttpNetworkAdapter(userAgent);
    RedditClient redditClient = OAuthHelper.automatic(adapter, credentials);

    // frontPage() returns a Paginator.Builder
    DefaultPaginator<Submission> frontPage = redditClient.frontPage()
            .sorting(SubredditSort.TOP)
            .timePeriod(TimePeriod.DAY)
            .limit(30)
            .build();

    Listing<Submission> submissions = frontPage.next();
    for (Submission s : submissions) {
        System.out.println(s.getTitle());
    }
}

Вот трассировка стека:

Исключение в потоке "main" java.lang.NullPointerException: пустое значение accessToken в net.dean.jraw.models.internal. $ AutoValue_OAuthDataJson. ($ AutoValue_OAuthDataJson.java:23) в net.dean.jraw.models.internal.AutoValue_OAuthDataJson. (AutoValue_OAuthDataJson.java:15) в net.deawAJAJD(AutoValue_OAuthDataJson.java:64) в net.dean.jraw.models.internal.AutoValue_OAuthDataJson $ MoshiJsonAdapter.fromJson (AutoValue_OAuthDataJson.java:18) в com.squareup.moshi.JsonAdava.rom: 41: at.dean.jraw.http.HttpResponse.deserializeWith (HttpResponse.kt: 49) в net.dean.jraw.oauth.OAuthHelper.scriptOAuthData $ lib (OAuthHelper.kt: 96) в net.dean.jraw.oauth.OAuthHelper.auOAuthHelper.kt: 32) в net.dean.jraw.oauth.OAuthHelper.automatic $ default (OAuthHelper.kt: 27) в net.dean.jraw.oauth.OAuthHelper.automatic (OAuthHelper.kt) в com.signalscanner.reddit.RedditAuthenticator.main (RedditAuthenticator.java:34)

Следует отметить, что RedditAuthenticator.java:34 представляет собой следующую строку:

RedditClient redditClient = OAuthHelper.automatic, адаптер ();

1 Ответ

0 голосов
/ 09 декабря 2018

Мне кажется, я нашел причину для этого.Когда вы создаете свое приложение в Reddit, вам нужно выбрать Script здесь, в этом разделе:

enter image description here

Я отлаживал JRAW, чтобы посмотреть, что оно делает, икогда он собирает HTTP-запрос для отправки в Reddit, он добавляет параметр для типа ваших приложений.Я не знаю, можете ли вы каким-либо образом настроить JRAW для использования любых других типов, но по умолчанию он использует 'Script'

Редактировать: дополнительную информацию о различных схемах аутентификации для JRAW можно найти здесь - https://mattbdean.gitbooks.io/jraw/content/v/v1.1.0/oauth2.html

...