我正在开发一款使用Facebook登录的Android应用程序 只需检索用户的Facebook个人资料名称和ID。
自2个月以来,我正在debug
模式下测试我的应用程序,并使用调试键盘。
我正在测试我的应用程序的所有配置文件都被添加为"测试人员",在我的应用程序的Facebook Developper控制台上。一切都很完美。
现在,该应用已准备就绪。我生成了一个有效的版本keyhash,删除了所有的" app tester"来自Facebook App Developper Console的帐户。 此外,我将应用程序切换为" public",所以每个人都应该访问它。
当我尝试使用某人的帐户登录时,在调试或发布模式下,它总是会失败。在调试模式下,不会打印任何日志错误,因此它不是" keyhash"的事情。
当我按下按钮时,它会打开Facebook应用程序,显示进度条,然后立即关闭。它会调用onCancel()
中的FacebookCallback<LoginResult>()
。
正如其他人在另一个stackoverflow帖子login jumps to onCancel中所说的那样,我尝试在尝试登录之前调用LoginManager.getInstance().logOut();
。
在这种情况下,不会调用onCancel()
函数,并调用onSuccess()
函数。但是,如果我尝试执行Profile.getCurrentProfile()
函数(就像之前应用程序工作时那样),它会抛出异常(e.getMessage()为空)。
非常感谢帮助!
编辑: Log.d("Token", loginResult.getAccessToken() + "");
打印
E/Token﹕ {AccessToken token:ACCESS_TOKEN_REMOVED permissions:[public_profile]}
答案 0 :(得分:1)
该错误的原因是我要求错误的权限。
我在user_status
函数中将public_profile
替换为logInWithReadPermissions()
。