我有一个适用于我大学的应用程序,并且我已集成了Facebook SDK,以便学生可以在Facebook上发布。
最近我决定进行更多测试,因为Facebook发布了新的SDK。我发现它是在Facebook Sdk出现的自定义对话框出现并向用户提供有关所需权限的信息后,没有任何反应。
这促使我更深入地搜寻问题。我打开了一个模拟器并检查了它,经过一些错误和分钟后我设法使SSO工作。同样的代码也可以在我的设备上运行,但是上面描述的问题又一次发生了。
虽然我没有运气。然后我想到从我的手机删除Facebook应用程序并再次尝试我的应用程序。这次SSO在模拟器中运行良好。
所以我在搜索后遇到了问题和结果。我完全确定在安装Facebook应用程序和我的应用程序时授权之间存在问题,但我无法找到。
如果其他人遇到同样的问题,请分享您的想法,如果有人知道任何解决方案,我会非常满意!
P.S。: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
}
}
});
}
}
});
答案 0 :(得分:1)
更新
我最终通过更新密钥哈希解决了问题。不知道为什么会出现问题,但现在它运作正常!
答案 1 :(得分:0)
为了便于提及,请使用此代码查找ACTUAL 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