Backsex에서 Parse를 실행하고 있습니다. 사용자가 Parse 사용자 테이블에 존재하지 않으면 항목을 작성하는 Facebook 로그인/로그인 작업을 파싱하고 Facebook을 통해 인증합니다. 그런 다음 사용자는 Android 앱에서 로그인/로그 아웃 할 수 있습니다. 모두 작동합니다.Parse Android Facebook은 이름/이메일을 저장하지 않습니다.
내가 겪고있는 문제는 Parse가 사용자 이름을 저장하지 않는다는 것입니다/처음으로 Facebook에서 검색 한 이메일, 사용자 이름 필드 (또는 확실하지 않은 다른 값)에 세션 토큰을 저장하고 있습니다. _User 테이블에 Facebook에서 검색 한 사용자의 이메일과 이름을 저장하고 싶습니다.
Android Studio에서 코드를 추적 할 때 페이스 북에서 가져온 내 이름, 이메일 등을 볼 수 있지만 해당 정보를 Parse _User 테이블에 넣지는 않습니다. 내 페이스 북 계정을 사용하여 응용 프로그램에 가입하실
예 :
@Override
public void onClick(View v) {
ParseFacebookUtils.logInWithReadPermissionsInBackground(Login.this, permissions, new LogInCallback() {
@Override
public void done(ParseUser user, ParseException err) {
if (user == null) {
Log.d("MyApp", "Uh oh. The user cancelled the Facebook login.");
} else if (user.isNew()) {
Log.d("MyApp", "User signed up and logged in through Facebook!");
getUserDetailFromFB();
Intent intent = new Intent(getApplicationContext(),CategoryList.class);
startActivity(intent);
finish();
} else {
Log.d("MyApp", "User logged in through Facebook!");
getUserDetailFromParse();
Intent intent = new Intent(getApplicationContext(),CategoryList.class);
startActivity(intent);
finish();
}
}
});
}
});
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
ParseFacebookUtils.onActivityResult(requestCode, resultCode, data);
}
void getUserDetailFromParse(){
ParseUser user = ParseUser.getCurrentUser();
mUsernameField.setText(user.getUsername());
mUsernameField.setText(user.getEmail());
Toast.makeText(getApplicationContext(), "Welcome Back!" + mUsernameField.getText().toString() + " Login.Email:" + mUsernameField.getText().toString(), Toast.LENGTH_SHORT).show();
}
void getUserDetailFromFB(){
GraphRequest request = GraphRequest.newMeRequest(AccessToken.getCurrentAccessToken(),new GraphRequest.GraphJSONObjectCallback(){
@Override
public void onCompleted(JSONObject object, GraphResponse response) {
try{
FbUsername=(object.getString("name"));
//FbUsername=response.getJSONObject().getString("name");
}catch(JSONException e){
e.printStackTrace();
}
try{
FbEmail=response.getJSONObject().getString("email");
}catch(JSONException e){
e.printStackTrace();
}
saveNewUser();
}
});
Bundle parameters = new Bundle();
parameters.putString("fields","name,email");
request.setParameters(parameters);
request.executeAsync();
}
void saveNewUser(){
ParseUser user = ParseUser.getCurrentUser();
user.setUsername(FbUsername);
user.setEmail(FbEmail);
//user.put("email", FbEmail);
user.saveInBackground(new SaveCallback() {
@Override
public void done(ParseException e) {
Toast.makeText(getApplicationContext(), "Welcome " +FbUsername+"!", Toast.LENGTH_SHORT).show();
}
});
}