SDK 3.0的Facebook授权问题

时间:2013-01-03 19:09:13

标签: android facebook facebook-android-sdk

我有一个适用于我大学的应用程序,并且我已集成了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                                         

                                        }
                                    }
                                });
                    }
                }
            });

2 个答案:

答案 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