我是Android开发的新手,所以请不要认为我的问题很愚蠢。 在我的申请中,我获得了电子邮件,Facebook和Twitter的授权。电子邮件部分已完成,现在我正在使用LoginManager进行Facebook授权部分。我达到了一个点,点击facebook图标,facebook授权屏幕出现,用户插入他的凭据,Facebook询问有关使用用户数据的许可。屏幕关闭后,用户返回应用程序登录界面。对于电子邮件登录,用户的电子邮件和密码将发送到服务器。在Facebook的情况下,我不清楚我应该发送什么,我该怎么做。这是我的代码,请有人帮忙或暗示 - 我做错了什么?
facebook.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// Call private method
onFacebookLogin();
}
});
****
private void onFacebookLogin()
{
callbackmanager = CallbackManager.Factory.create();
// Set permissions
LoginManager.getInstance().logInWithReadPermissions(this, Arrays.asList("email", "user_photos", "public_profile", "user_birthday"));
LoginManager.getInstance().registerCallback(callbackmanager,
new FacebookCallback<LoginResult>() {
@Override
public void onSuccess(LoginResult loginResult) {
System.out.println("Success");
Bundle parameters = new Bundle();
parameters.putString("fields", "id, email, first_name, last_name, gender, user_birthday");
GraphRequest request = GraphRequest.newMeRequest(loginResult.getAccessToken(), new GraphRequest.GraphJSONObjectCallback() {
@Override
public void onCompleted(JSONObject json, GraphResponse response) {
if (response.getError() != null) {
// handle error
System.out.println("ERROR");
} else {
System.out.println("Success");
try {
String jsonresult = String.valueOf(json);
System.out.println("JSON Result" + jsonresult);
String email = json.getString("email");
String id = json.getString("id");
String firstname = json.getString("first_name");
String lastname = json.getString("last_name");
String gender = json.getString("gender");
String birthdate = json.getString("user_birthday");
} catch (JSONException e) {
e.printStackTrace();
}
}
}
});
request.executeAsync();
}
@Override
public void onCancel() {
Log.d("TAG_CANCEL", "On cancel");
}
@Override
public void onError(FacebookException error) {
Log.d("TAG_ERROR", error.toString());
}
});
}
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
callbackmanager.onActivityResult(requestCode, resultCode, data);
答案 0 :(得分:1)
好的我得到了这个问题。当你的Facebook登录成功。获取登录所需的所有信息。比如获取电子邮件地址。对于密码,您可以设置参数authByFacebook =&#34; true&#34;。希望这对你有用。
答案 1 :(得分:1)
尝试在登录成功后将意图移至下一页 如下面给出的代码
loginButton.registerCallback(callbackManager, new FacebookCallback<LoginResult>() {
@Override
public void onSuccess(LoginResult loginResult) {
// App code
//Toast.makeText(LoginActivity.this, "on success", Toast.LENGTH_LONG).show();
Intent intent = new Intent(LoginActivity.this, MainActivity.class);
intent.putExtra("login_type", "facebook");
startActivity(intent);
finish();
}
@Override
protected void onResume() {
super.onResume();
// Logs 'install' and 'app activate' App Events.
AppEventsLogger.activateApp(this, getResources().getString(R.string.facebook_app_id));
}
@Override
protected void onPause() {
super.onPause();
// Logs 'app deactivate' App Event.
AppEventsLogger.deactivateApp(this, getResources().getString(R.string.facebook_app_id));
}