使用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解决。不知道为什么这个问题,但现在它工作正常!

+0

调试和发布(设备)是不同的。你可以在你的fb仪表板中包括钥匙 –

+0

你能解释一下你的评论吗? – Pavlos

+0

在仿真器和实际设备上进行测试的keyhashes是不同的。一个不为另一个工作。 ü需要生成2个keyhashes,每一个和更新相同的FB仪表板在同一个应用程序 –

只是为了提的缘故,使用此代码找到实际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