我刚开始使用面向Android的Facebook SDK
我在应用程序中构建了一个简单的登录,但是非常糟糕
在我的应用程序中,我使用 LoginManager 登录,如果登录成功完成 - 我得到 访问令牌 。简单而伟大。此操作还接受我的应用程序对刚刚使用我的应用程序登录的用户的权限。
但是,如果我从手机上卸载应用程序(我的应用程序)(没有注销),然后再次安装它并尝试再次登录,我得到一个
“无效的密钥哈希。密钥哈希{blablablabla}与任何存储的密钥哈希都不匹配....”
某些Facebook活动中显示的错误。
因此,用户接受过去的应用权限, 并获得一些访问令牌。但是当他尝试在安装新应用程序后再次登录时,它不起作用并显示错误 我认为这是因为用户过去接受了权限 一些访问令牌,现在,当访问令牌为NULL(由于全新安装),Facebook sdk不接受。
我只是需要我的应用才能识别用户已拥有权限,
并且不要登录。所以我试着检查用户是否有权限:
new GraphRequest(
**{{{Access Token is missing}}}**,
"/me/permissions",
null,
HttpMethod.GET,
new GraphRequest.Callback()
{
public void onCompleted(GraphResponse response)
{
if( response.getError() != null )
{
//user has no permissions, do login
}
else
{
//user has permissions, do not login
}
}
}
).executeAsync();
但是因为它是一个全新的安装应用程序(因此用户没有访问令牌),所以缺少访问令牌。
所以,我尝试创建一个新的访问令牌(不知何故):
AccessToken.createFromNativeLinkingIntent(getIntent(), getString(R.string.facebook_app_id), new AccessTokenCreationCallback()
{
public void onSuccess(AccessToken token)
{
AccessToken.setCurrentToken(token);
}
public void onError(FacebookException error)
{
}
});
但它不起作用。始终调用onError(FacebookException错误) 怎么解决?
编辑:
如果我成功检查用户是否具有权限,那么我可以轻松删除当前权限,然后进行新登录,
这将解决我的问题。
感谢。
答案 0 :(得分:0)
你可以通过在[blah blah]空间放置他们给你的密钥哈希来解决这个问题,并将它添加到你的Facebook开发人员的密钥哈希中为这个应用程序