我发展,我一直在试图将社交媒体登录Android应用程序,我想补充通过社交媒体登录检索到的详细信息(姓名&电子邮件)并通过Volley请求将其添加到我们服务器上的用户数据库。 到目前为止,我已经设法成功地获得用户的详细信息,并使用我创建的“会话”类将它添加到共享偏好,但是调用另一个方法将数据发送到服务器无法正常工作。Android的凌空请求不发送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);
}
}
});
正如你可以在我的try/catch看到我做通过“终于”块到registerSocialUser()方法的请求。这样可以很好地调用以下方法,并且Console日志是用户的详细信息,但它永远不会添加到数据库中。
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是一个PHP文件,该文件有两个POST参数(姓名和电子邮件),并检查它不存在后,将它们添加到数据库。我可以通过我的浏览器手动调用它,并使用完全相同的细节,并且它可以正常工作并添加到数据库中。
原谅我,如果我的任何代码是非常糟糕的做法,我很新的Android开发这样会很感激的帮助:)
我的男人!这是它,后值不匹配,现在我觉得这样的傻瓜哈哈 – Joe
而不是最后,你可以在try块内调用你的函数,因为如果任何异常发生将发生如果没有用户名,电子邮件是没有返回,这将由catch块处理。如果从服务器获取所有内容,则可以调用您的url,但如果缺少任何内容,则只显示一个异常。在终于 –
哇,好......! –