使用SDK 3.0的Facebook授权问题
问题描述:
我有一个适用于我的大学的应用程序,并且我已经整合了Facebook SDK,以便学生可以在Facebook上发帖。使用SDK 3.0的Facebook授权问题
最近我决定做一些更多的测试,因为Facebook发布了新的SDK。我发现它是由Facebook Sdk出现的Custom Dialog出现后给用户所需权限的信息,没有任何反应。
这促使我更深入地搜索问题。我打开了一个模拟器并检查了它,经过一些错误和分钟后,我设法让SSO工作。同样的代码也应该在我的设备上工作,但上述问题再次发生。
虽然我没有运气。然后我想到从我的手机中删除Facebook应用程序并再次尝试我的应用程序。这次SSO在模拟器中运行良好。
所以我搜索后遇到了问题和结果。我完全确定在安装Facebook应用程序和我的应用程序之间有授权问题,但我找不到。
如果其他人遇到同样的问题,请分享您的想法,如果有人知道任何解决方案,我会很好!
问题:Google根本没有帮我。你是我最后的机会。
我的方式与Facebook连接:
Session session = Session.openActiveSession(act, true,
new StatusCallback() {
public void call(final Session session, SessionState state,
Exception exception) {
if (session.isOpened()) {
Log.d("Session is:", " opened");
Request.executeMeRequestAsync(session,
new Request.GraphUserCallback() {
public void onCompleted(GraphUser user,
Response response) {
if (user != null) {
//my code goes here
}
}
});
}
}
});
答
UPDATE
我终于通过更新keyhash解决。不知道为什么这个问题,但现在它工作正常!
答
只是为了提的缘故,使用此代码找到实际keyhash:
PackageInfo info;
try {
info = getPackageManager().getPackageInfo("com.myname.lolo", PackageManager.GET_SIGNATURES);
for (Signature signature : info.signatures) {
MessageDigest md;
md = MessageDigest.getInstance("SHA");
md.update(signature.toByteArray());
//String something = new String(Base64.encode(md.digest(), 0));
* String something = new String(Base64.encodeBytes(md.digest()));
Log.e("hash key", something);
}
}
catch (NameNotFoundException e1) {
Log.e("name not found", e1.toString());
}
catch (NoSuchAlgorithmException e) {
Log.e("no such an algorithm", e.toString());
}
catch (Exception e){
Log.e("exception", e.toString());
}
您可以稍后删除此代码。并且所有这些信用:Key hash for Android-Facebook app
调试和发布(设备)是不同的。你可以在你的fb仪表板中包括钥匙 –
你能解释一下你的评论吗? – Pavlos
在仿真器和实际设备上进行测试的keyhashes是不同的。一个不为另一个工作。 ü需要生成2个keyhashes,每一个和更新相同的FB仪表板在同一个应用程序 –