2013-09-06 2 views
2

Я использую parse.com в качестве бэкэнд для приложения, и, хотя руководство по API и краткие руководства по началу работы полезны, я просто не могу получить facebook < -> связь пользователя с работой.Правильный способ связать существующего пользователя с учетной записью facebook

В приложении у меня есть две кнопки входа: один для ввода номера пользователя и пароля, а другой - для входа в систему с помощью facebook. Вход в facebook отлично работает и позволяет пользователям использовать социальные функции приложения. Проблема заключается в том, что они входят в систему только с номером телефона/паролем.

Вот моя кнопка сшивания код:

linkUser(ParseUser.getCurrentUser()); 


private void linkUser(final ParseUser user) { 
List<String> permissions = Arrays.asList("email", Permissions.User.ABOUT_ME); 
if (!ParseFacebookUtils.isLinked(user)) { 
    ParseFacebookUtils.link(user, permissions, this, new SaveCallback() { 

    @Override 
    public void done(ParseException ex) { 

     if (ex == null) { 
     Log.d("MyApp", "No Exception!!"); 

     if (ParseFacebookUtils.isLinked(user)) { 
      Log.d("MyApp", "Woohoo, user logged in with Facebook!"); 
     } 
     } else { 
     Log.d("MyApp", ex.getMessage()); 
     } 

    } 
    }); 
} else { 
    Log.d("MyApp", "user already link in with Facebook!"); 
} 

Если я очистить кэш-память приложения, и сделать новую установку, я войти первый фиктивным пользователя я создал в бэкэнде Разбора, а затем нажмите кнопку " ссылку ". Я смотрю на logcat, но никогда не вижу никаких строк журнала, указывающих на то, что пользователь связан или нет .. это как если бы код «done» никогда не срабатывал. Я также вхожу в систему для анализа и просмотра данных fbAuth, чтобы узнать, появляется ли пользователь facebook id ... ничего.

Единственное, что я могу/не могу выполнить rihgt, завершает рабочий процесс auth, который должен находиться в методе onActivityResult. Я положил это в моей вызывающему деятельности (Preferences):

@Override 
protected void onActivityResult(final int requestCode, final int resultCode, final Intent data) { 
super.onActivityResult(requestCode, resultCode, data); 

if (resultCode == 11000) { 
} else { 
    ParseFacebookUtils.finishAuthentication(requestCode, resultCode, data); 
} 
} 

Мое понимание функции связи, является то, что вы можете взять обычного пользователя синтаксического анализа, бревенчатый их (номер телефона, адрес электронной почты/пасс, и т.д.), а затем один раз у вас есть кеш-память ParseUser, затем ссылка на facebook с использованием SSO и учетных данных пользователей facebook через приложение facebook или веб-страницу. parsefacebookutils.link затем связывает пользователя facebook с вашим пользователем синтаксического анализа, так что они связаны в конце. Таким образом, ваш обычный пользователь может начать использовать функции facebook. Это верно?

Я действительно ненавижу просить код, но если кто-то использовал эту функцию, вы можете поделиться тем, как вы это сделали, или указать, что я сделал неправильно?

ответ

3

Я знаю, что это слишком поздно, но ответ может помочь кому-то, кому это нужно. У меня тоже была такая же проблема, и я попробовал код ниже, и это сработало для меня. Перейдите по ссылке help.

Включите следующий код в действие, в котором используется код ссылки на facebook.

@Override 
protected void onActivityResult(int requestCode, int resultCode, Intent data) { 
    // TODO Auto-generated method stub 
    super.onActivityResult(requestCode, resultCode, data); 
       if (requestCode == com.facebook.Session.DEFAULT_AUTHORIZE_ACTIVITY_CODE) 
       ParseFacebookUtils.finishAuthentication(requestCode, resultCode, data); 
} 
+0

Это все, спасибо! – OneThreeSeven

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