将现有用户与Facebook帐户链接的正确方法

时间:2013-09-06 07:48:44

标签: android facebook parse-platform

我正在使用parse.com作为应用程序的后端,虽然API指南和快速入门指南很有帮助,但我似乎无法让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!");
}

如果我清除应用程序的缓存并进行全新安装,我首先使用我在Parse后端创建的虚拟用户登录,然后单击“链接”按钮。我看看logcat,但是从来没有看到任何指示用户被链接的日志行。就好像“完成”代码永远不会触发。我还登录解析并查看fbAuth数据,看看用户的facebook id是否显示......没有。

我可能/可能不会做rihgt的一件事是完成auth工作流程,它应该在onActivityResult方法中。我把它放在我的通话活动中(首选项):

@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缓存,然后使用SSO和用户链接到Facebook通过Facebook应用程序或网页的Facebook凭据。然后parsefacebookutils.link将facebook用户绑定到您的解析用户,以便它们在后端链接。这样您的普通用户就可以开始使用Facebook功能。这是对的吗?

我真的很讨厌要求代码,但如果有人使用过这个功能,你能分享一下你是怎么做的,或者指出我做错了什么?

1 个答案:

答案 0 :(得分: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);
}