0

rest-auth/user/を呼び出すときに問題が発生しています。AndroidのDjango Rest AuthトークンVolley

私はこのログインから鍵を取得して取得することができますが、その鍵はrest-auth/user/に関してどのように使用するのかよくわかりません。私はボレーでGETとそれを使ってみました。また、ボレーでPOSTとしました。しかし、私がそうしようとするたびに、私は403の資格情報が提供されていないと言って戻ってくる。トークンをAndroidのSharedPreferencesに保存してみました。

何が間違っているか、この問題を解決する方法がわからないので、何か助けていただければ幸いです。

私のコードは次のようになります。あなたが休憩のために異なる認証方式を使用していることは明らかであるコメントから

getUserQueue = Volley.newRequestQueue(this); 
JSONObject jsObj = new JSONObject(); 

try { 
    jsObj.put("token", token); 
} catch (JSONException e) { 
    e.printStackTrace(); 
} 

JsonObjectRequest jsObjRequest = new JsonObjectRequest 
     (Request.Method.GET, "http://hurst.pythonanywhere.com/supportal/rest-auth/user/", jsObj, new Response.Listener<JSONObject>() { 
      @Override 
      public void onResponse(JSONObject response) { 
       try { 
        result = response.getString("username"); 
       } catch (JSONException e) { 
        e.printStackTrace(); 
       } 
      } 
     }, new Response.ErrorListener() { 
      @Override 
      public void onErrorResponse(VolleyError error) { 
       error.printStackTrace(); 
      } 
     }); 
// add the request object to the queue to be executed 
getUserQueue.add(jsObjRequest); 
+0

GETメソッドは、HTTPボディを使用していないので、私は 'jsObj'パラメータ –

+0

あなたはcURLのか、ポストマンを使用して要求をすることができるようです何をするかわからないんだけど?私はそれをAndroidで書いてみる前にそれを試してみようとしています –

+0

郵便受けを使って私が取得したトークンでGETでもPOSTでもアクセスできませんでした。 "} ブラウザでログインしてユーザーエンドポイントにアクセスしようとすると、ログインしたアカウントの情報が返されるため、ブラウザでセッションデータ/ Cookieが使い果たされているようです。 – user2302876

答えて

0

、これらを説明し、

SessionAuthentication

セッションを認証するための認証にアンドロイドボレーの永続的なクッキーの実装が必要な場合は、Set-Cookieのヘッダーがサービスから解析されているため、hereを確認してくださいr API応答&次のリクエストを送信します。

BasicAuthentication

基本認証方式、ユーザ名&パスワードで(ログイン後?)すべての要求を介して送信され、Authorizationヘッダー値を持つ(Base64エンコード)このチェックにhere

を実装する方法を確認します.TO
@Override 
public Map<String, String> getHeaders() throws AuthFailureError { 
    HashMap<String, String> params = new HashMap<String, String>(); 
    String creds = String.format("%s:%s","USERNAME","PASSWORD"); 
    String auth = "Basic " + Base64.encodeToString(creds.getBytes(), Base64.DEFAULT); 
    params.put("Authorization", auth); 
    return params; 
} 

JSONWebTokenAuthenticatio N

JWT認証スキームでは、ログインに成功した後にJWTトークンを取得します。ユーザー認証が必要なすべてのリクエストでこのトークンを送信する必要があります。Authorizationヘッダー値をJWT token_after_loginに設定します。送信されます。

@Override 
public Map<String, String> getHeaders() throws AuthFailureError { 
    HashMap<String, String> params = new HashMap<String, String>(); 
    String auth = "JWT " + token // token you will get after successful login 
    params.put("Authorization", auth); 
    return params; 
} 
+0

私は両方のプラットフォームでの経験を持っているので、Django関連またはAndroid関連の説明 –

関連する問題