2017-01-24 6 views
0

У меня есть материал Parse, работающий на Back4App. Я получил работу по регистрации/регистрации в Facebook, которая проходит через Parse и проходит проверку подлинности с помощью Facebook, если пользователь не существует в пользовательской таблице Parse, он создает запись. Пользователь может тогда войти/выйти из приложения Android отлично, все работает.Parse Android Facebook зарегистрируйтесь, не сохраняя имя/адрес электронной почты

Проблема, с которой я столкнулась, заключается в том, что Parse не сохраняет имя пользователя/электронную почту, которое оно сначала извлекает из Facebook, оно сохраняет токен сеанса в поле имени пользователя (или какое-то другое значение, которое я не знаю). Я хочу, чтобы он сохранил электронную почту и имя пользователя, полученные из Facebook, в таблице _User.

Я вижу, когда я отслеживаю код в Android Studio, он может видеть мое полное имя, адрес электронной почты и т. Д., Снятый с Facebook, но не помещает эту информацию в таблицу Parse _User.

например, когда я подписаться на приложение, используя свой facebook счет:

enter image description here

@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(); 
     } 
    }); 
} 

ответ

0

Никогда ум, приведенный выше код работает 100% для других перспективных. Моя ошибка была с Parse - у меня уже был мой адрес электронной почты в таблице _Users, поскольку я ранее делал учетную запись и аутентифицировался с помощью Parse напрямую.

В соответствии с журналами Parse он не может установить мой адрес электронной почты для нового пользователя, поскольку пользователь уже существует в таблице.

Смежные вопросы