ユーザーのRedditフロントページを取得しようとしています。 Token Retrieval (code flow)で認証トークンを正常に受信しました。私はPostman経由で期待されるJSON応答を得ることができましたが、Retrofitで同じ結果を出すことはできません。コールバックでonFailure()が起動されているため、要求がタイムアウトしているようです。スコープを使用しています:identity、mysubreddits、およびreadReddit Api GETリクエストがPostmanで成功しましたが、Retrofitで失敗しました
その他の注意:十分なスコープを使用せず、有効期限が切れた認証トークンを使用している場合は、以下のコードで401と403の応答があります。
関連の定数:
redditToken = (actual auth token String)
RedditConstants.REDDIT_BASE_URL_OAUTH2 = "https://oauth.reddit.com"
関連法のセクション:
if (redditToken != null) {
Retrofit retrofit = new Retrofit.Builder()
.baseUrl(RedditConstants.REDDIT_BASE_URL_OAUTH2)
.addConverterFactory(GsonConverterFactory.create())
.build();
Api api = retrofit.create(Api.class);
Map<String, String> headers = new HashMap<>();
headers.put("Authorization", "bearer " + redditToken);
headers.put("User-Agent", RedditConstants.REDDIT_USER_AGENT);
Call<RedditFeed> call = api.getFeed(headers);
call.enqueue(new Callback<RedditFeed>() {
@Override
public void onResponse(Call<RedditFeed> call, Response<RedditFeed> response) {
Log.d("FINDME", "response "+ response.toString());
if (response.isSuccessful()) {
Log.d("FINDME", "response was a success! we got the feed!");
} else {
Log.d("FINDME", "responce was not successfull triggered");
}
}
@Override
public void onFailure(Call<RedditFeed> call, Throwable t) {
Log.d("FINDME", "onFailure called from populateRedditFeed");
}
});
} else {
Toast.makeText(this, "Please Login with Reddit", Toast.LENGTH_SHORT).show();
}
改修インタフェース:
public interface Api {
@GET(".")
Call<RedditFeed> getFeed (
@HeaderMap Map<String, String> headers
);
}
ログ結果:
D/NetworkSecurityConfig: No Network Security Config specified, using
platform default
I/zygote: Do full code cache collection, code=123KB, data=105KB
After code cache collection, code=111KB, data=79KB
D/FINDME: onFailure called from populateRedditFeed
郵便集配人成功:
throwableをonFailureに印刷すると、エラーが何であるかがわかります。 – Kushan
コードを変更することなく、ここに投稿してください。私は今、成功を収めています。私がスターバックスにいて、私の家のWiFiを使っている前に、おそらくそれはそれと関係があります。私は明日スターバックスでそれをテストして確認します。 –
ハハクール:)知っておいて....コードがうまくいて、401と403のコードを指摘していたので、あなたは認証トークンについて知っていたことを知っていました...そういうわけで、ログ、とにかくログを残して、それはあなたを助けるでしょう。 – Kushan