OAuth2を使用するサイトに認証しようとしていて、セッションオブジェクトにトークンを格納しようとしています。私のWebアプリケーションは最初にそこにトークンがあるかどうかをチェックし、存在しない場合は、外部サイトのログインページにユーザーをリダイレクトします。ユーザーはログインしてアプリケーションにリダイレクトされます。これまでのところ、とても良い、これは動作します。私のアプリは私を外部サイト(Mendeley)に誘導し、そこにログインしてから、私の期待するアプリケーションのURLに私をリダイレクトします。OAuth2がトークンを返す401
それは戻って私のアプリにリダイレクトするとき、私はコードリクエストに応じて状態パラメータを期待して、私はこれらを参照してくださいので、私は、私は正しい軌道に乗ってると仮定し、私は「場合(私を停止m間違っている)。それで、私が正しく理解すれば、私はコードをMendeleyサービスに送って、私の認証トークンを取得することになっています。それはそれがすべて爆発するところです。
URL url = new URL("https://api-oauth2.mendeley.com/oauth/token");
HttpsURLConnection connection = (HttpsURLConnection) url
.openConnection();
connection.setRequestMethod("POST");
connection.setRequestProperty("Content-Type",
"application/x-www-form-urlencoded");
String authString = getClientId() + ":" + "[MY CLIENT SECRET]";
System.out.println("auth string: " + authString);
byte[] authEncBytes = Base64.getUrlEncoder().encode(
authString.getBytes());
String authStringEnc = new String(authEncBytes);
System.out.println("Base64 encoded auth string: " + authStringEnc);
connection.addRequestProperty("Authorization", "Basic "
+ authStringEnc);
connection.setDoOutput(true);
OutputStream os = connection.getOutputStream();
OutputStreamWriter writer = new OutputStreamWriter(os);
writer.write("scope=all&grant_type=authorization_code");
writer.write("&client_id=");
writer.write(getClientId());
writer.write("&code=");
writer.write(code);
writer.write("&redirect_uri=");
writer.write(getMendeleyRedirectUrl(request));
writer.write("&client_secret=");
writer.write("[MY CLIENT SECRET]");
writer.flush();
writer.close();
int responseCode = connection.getResponseCode();
BufferedReader reader = new BufferedReader(new InputStreamReader(
connection.getInputStream()));
私が得る応答コードが、それが例外をスローし、接続からInputStreamを取得しようとしている最後の行では401であり、それは私には理にかなっているが、それは401を返し、持っていない感知します1。
はい、redirect_uriがエンコードされています。 (私はログインへの最初のリダイレクトがそうでなければ動作しないと思う)
私のSpidey Senseは、私にはわかりやすいものを見落としていると言いますが、私は考えることができるすべてを試しました。どんな助けでも大歓迎です。
編集:認証ヘッダが今レスポンスコード400
許可ベーシスはbase64のエンコーディング ":"である必要があります。この場合、ユーザーはアプリIDとパスワードアプリの秘密になります。 –
fbiagi