私はソーシャルメディアのログインを取り入れようとしているアンドロイドアプリを開発中です。ソーシャルメディアのログイン(名前&のメール)で取得した詳細を追加しようとしています。 Volleyリクエストを介してサーバー上のユーザーのデータベースに追加します。 これまでは、ユーザーの詳細を正常に取得し、作成した 'セッション'クラスを使用して共有環境設定に追加しましたが、サーバーにデータを送信する別のメソッドを呼び出すことはできません。あなたは私のtry/catchで見ることができるようにAndroid Volleyサーバー/データベースにPOSTデータを送信しないように依頼する
facebookLoginButton.registerCallback(callbackManager, new FacebookCallback<LoginResult>() {
String fbID = null;
String fbName = null;
String fbEmail = null;
@Override
public void onSuccess(LoginResult loginResult) {
GraphRequest request = GraphRequest.newMeRequest(
loginResult.getAccessToken(),
new GraphRequest.GraphJSONObjectCallback() {
@Override
public void onCompleted(
JSONObject object,
GraphResponse response) {
try {
fbID = object.getString("id");
fbName = object.getString("name");
fbEmail = object.getString("email");
session.setLogin(true);
session.setUserDetails(fbEmail,fbName);
} catch (JSONException e) {
e.printStackTrace();
} finally {
registerSocialUser(fbName, fbEmail);
}
}
});
私は「最終的には」ブロックを経由してregisterSocialUser()メソッドへの要求を行います。これにより、以下のメソッドが正常に呼び出され、コンソールログにはユーザーの詳細が表示されますが、データベースには追加されません。
private void registerSocialUser (final String name, final String email) {
RequestQueue queue = Volley.newRequestQueue(this);
StringRequest request = new StringRequest(Request.Method.POST, Config.REGISTER_SOCIAL_URL, new Response.Listener<String>() {
@Override
public void onResponse(String response) {
Log.d("CREATION", "Social Media Account Added: " + name + " " + email);
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
Log.d("CREATION", "Create Error");
}
}) {
@Override
protected Map<String, String> getParams() {
Map<String, String> params = new HashMap<>();
params.put("user",name); //name
params.put("email",email); //email
return params; //return the parameters
}
};
queue.add(request);
Log.d("CREATION", "SUCCESS");
}
logcatリターン:
Social Media Account Added: *My name* *My email*
Config.REGISTER_SOCIAL_URLは2つのPOSTパラメータ(名前とメールアドレスを)取り、それが既に存在していない確認した後、データベースに追加し、PHPファイルです。私は正確に同じ詳細で私のブラウザを介してこれを手動で呼び出すことができ、うまく動作し、データベースに追加します。私のコードのいずれかが本当に悪い習慣である場合
は、すみません、私は助けを本当に感謝:)
私の男!それは、ポスト値が一致しなかった、ああ、私は今、このような愚か者のような気がするのです。 – Joe
最後に、tryブロック内であなたの関数を呼び出すことができます。 catchブロックによって処理される返されません。サーバーからすべてが取得された場合は、あなたのURLを呼び出すことができますが、欠落しているものがあれば例外を表示するだけです。最終的に –
うわー、良い......! –