我使用 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 是否显示...什么也没有。
我可能/可能不会做的一件事是完成身份验证工作流程,这应该在 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 用户绑定到您的 parse 用户,以便它们在后端链接。这样您的普通用户就可以开始使用 Facebook 功能了。这个对吗?
我真的很讨厌要求代码,但是如果有人使用过这个功能,你能分享一下你是怎么做到的,或者指出我做错了什么吗?