2017-06-23 9 views
0

最初にログインする必要があり、oauthログオンを使用しているRest apiにPOSTリクエストを行っています。私はこのすべてをJavaコードで行い、サードパーティの残りのAPIのクライアントとして機能しています。 私はこのためにjavaで次のコードを作成しましたが、リクエストするたびに内部サーバーエラーが発生します。私の主な目的は、ログイン要求からクッキーを取得して、次回以降の呼び出しでそれを使用できるようにすることです。どのようにヒットするか外部Javaコードを介してOauth認証が必要な残りのAPI

コード:

URL Loginurl = new URL(strURL); 
     HttpURLConnection conn = (HttpURLConnection) Loginurl.openConnection(); 
     conn.setDoOutput(true); 
     conn.setRequestMethod("POST"); 
     conn.setRequestProperty("User-Agent","Mozilla/5.0 (Windows NT 6.1; WOW64; rv:44.0) Gecko/20100101 Firefox/44.0"); 
     conn.setRequestProperty("Content-Type", "application/json"); 
     conn.setRequestProperty("Accept", "application/json"); 
     conn.setDoInput(true); 
     conn.setUseCaches(false); 
     conn.setAllowUserInteraction(false); 
     conn.setRequestProperty("Content-Language", "en-US"); 
       BufferedWriter out = new BufferedWriter(new OutputStreamWriter(conn.getOutputStream())); 
     out.write(strLoginString); 
     out.close(); 
       int responseCode=conn.getResponseCode(); 
     if(responseCode==200) 
     { 
      cookie = conn.getHeaderField("Set-Cookie"); 
      return cookie;} 

答えて

0

あなたはOAuthの仕組みを理解する必要があります。 OAuth2を使用していると仮定していますが、OAuthにセッションはありません。代わりにアクセストークンと呼ばれるものがあります(これは、認証トークンを交換した後に取得します)。

OAuthには4つの関係者が含まれていますプロバイダー、リソースサーバー。リソース(api)にアクセスするには、リソース所有者(user)がアイデンティティプロバイダ(oauth api)で認証する必要があります。あなたはクライアントであり、認証が完了するまでOAuthサーバーとユーザーのブラウザを操作する必要があります。あなたは、アイデンティティプロバイダとのユーザ認証のために真ん中にいる人間として行動しようとすべきではありません。アイデンティティプロバイダがユーザを認証すると、認証トークンを使用してユーザをエンドポイントにリダイレクトし、アクセストークンと交換して実際のAPIコールを実行します。

サイトのOAuthを読むことをお勧めします。Oauth.net

関連する問題