質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
OAuth

OAuth(Open Authorization)は、APIを通して保護されたリソース(サードパーティのアプリケーション)へアクセスする為のオープンプロトコルです。

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Facebook

Facebookは、実名登録制のSNS(ソーシャル・ネットワーキング・サービス)です。開発者用のデベロッパーサイトが存在し、一般ユーザーによるFacebook向けアプリケーション開発が可能です。

Q&A

1回答

4095閲覧

OAuthでログインするアプリを作っているのですが、時々エラーが出力されます

Sfidante

総合スコア90

OAuth

OAuth(Open Authorization)は、APIを通して保護されたリソース(サードパーティのアプリケーション)へアクセスする為のオープンプロトコルです。

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Facebook

Facebookは、実名登録制のSNS(ソーシャル・ネットワーキング・サービス)です。開発者用のデベロッパーサイトが存在し、一般ユーザーによるFacebook向けアプリケーション開発が可能です。

0グッド

0クリップ

投稿2015/08/04 01:04

Facebookアプリの開発でOAuthを用いてログイン処理をしているのですが、
毎回ではないのですが、
エラーがでてしまいます。

そのエラー内容は次のとおりです。

java.io.IOException: Server returned HTTP response code: 400 for URL: https://graph.facebook.com/oauth/access_token?... //Javaコードでのエラー箇所 at fb.Callback.httpRequest(Callback.java:203) at fb.Callback.doGet(Callback.java:56)

というエラーになりました。

下記に該当するJavaコードを記載いたします。

java

1//アクセストークンを取り出す 2 final String accessTokenURL = 3 "https://graph.facebook.com/oauth/access_token?client_id=" 4 + appId 5 + "&redirect_uri=" 6 + URLEncoder.encode(callbackURL, "UTF-8") 7 + "&client_secret=" 8 + appSecret 9 + "&code=" 10 + URLEncoder.encode(code, "UTF-8"); 11 //Callback.java:56(1つ目のエラー) 12 final String accessTokenResult = httpRequest(new URL(accessTokenURL));

java

1String httpRequest(URL url) throws IOException { 2 HttpURLConnection conn = (HttpURLConnection) url.openConnection(); 3 conn.setDoOutput(true); 4 conn.setUseCaches(false); 5 conn.setRequestMethod("GET"); 6 //Callback.java:203(2つ目のエラー) 7 BufferedReader reader = new BufferedReader(new InputStreamReader(conn.getInputStream())); 8 String line = null; 9 String response = ""; 10 while ((line = reader.readLine()) != null) { 11 response += line; 12 } 13 reader.close(); 14 conn.disconnect(); 15 return response; 16 }

エラーコードで調べて、
エンコードの記載がない(下記URL)からとかありましたが、
http://stackoverflow.com/questions/25115048/java-io-ioexception-server-returned-http-response-code-400-for-url
原因は全くわかりませんでした。

このエラーは毎回出るのではなく、
トップページからCallback.javaに時間が経ってアクセスしようとした時に起こります。(この表現が正しいのかわかりませんが)

バージョンはGraph API v2.3です。

何卒よろしくお願いいたします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

Javaは、詳しくないので推測です。

この情報だけでは、断定はできないですが、
アクセストークンの有効期限が切れているのかもしれません。
OAuth認証つかってる他サイトでも、アクセス許可画面で放置した後に許可するボタン押してもログインできないと思います。

APIは、大抵エラー発生時にはエラーレスポンスを返します。
エラーコードのみではなく、エラーレスポンスの内容によっても適切にハンドリングしたほうがいいと思います。
適切にハンドリングされていれば、なぜエラーになるのかも判断しやすくなります。

Handling Errors

投稿2015/08/04 01:32

退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問