2013-10-30 94 views
0

我想访问登录用户的Facebook信息。为此,我通读了各种文档,并发现在创建应用程序并生成Facebook App-Id的Facebook开发人员部分上需要使用哈希键配置。我试图在Facebook开发者门户上生成散列键以填充到Native Android App部分。我经历了很多这样的链接HereFacebook的哈希键问题

但是哈希键根本不工作。有时它表示没有散列匹配,或者有时它只是提示一个Facebook对话框并消失。

但它仍然不工作在我的设备。它在Emulator上运行良好。我使用的是Mac系统,这是否有问题?

任何人都可以引导我,如果我失去了一些东西?我是否需要在Facebook开发人员门户的应用程序设置中编辑更多内容?

回答

0

这是因为设备正在创建不在您的应用设置中的新键哈希。所以你必须相应地更新keyhash。使用onCreate()

try { 
      PackageInfo info = getPackageManager().getPackageInfo("YOUR_PACKAGE_NAME", PackageManager.GET_SIGNATURES); 
      for (Signature signature : info.signatures) { 
       MessageDigest md = MessageDigest.getInstance("SHA"); 
       md.update(signature.toByteArray()); 
       Log.d("KeyHash:", Base64.encodeToString(md.digest(), Base64.DEFAULT)); 
       } 
     } catch (NameNotFoundException e) { 

     } catch (NoSuchAlgorithmException e) { 

     } 
+0

我也试过这个从这个链接http://stackoverflow.com/questions/5989237/generating-hash-key-for-app-using-facebook-sdk但没有运气。 –

+0

是否在Facebook应用程序设置和代码中正确输入了包名? –

+0

是的,它和它在Manifest文件中声明的一样,因为package =“XXX.XXX.XXX”就是这样吗?我错过了什么。它应该与Facebook开发者门户上的Native IOS APP中提到的捆绑ID相似吗? –

0

这对于很多人来说都是一个问题。或者,从命令行生成散列,您可以从代码生成散列,然后将其打印到日志中,以便从中复制。

以下代码可以做到这一点。例如,你可以将它放在你的活动onCreate()中,并且一旦你有散列,就将它移除。显然你需要将包名改为你自己的。

try { 
    PackageInfo info = getPackageManager().getPackageInfo(
      "com.facebook.samples.loginhowto", 
      PackageManager.GET_SIGNATURES); 
    for (Signature signature : info.signatures) { 
     MessageDigest md = MessageDigest.getInstance("SHA"); 
     md.update(signature.toByteArray()); 
     Log.d("KeyHash:", Base64.encodeToString(md.digest(), Base64.DEFAULT)); 
    } 
} catch (NameNotFoundException e) { 
} catch (NoSuchAlgorithmException e) { 
} 

This回答很好地介绍了如何从命令行做同样的,如果你不想使用的代码。两者应该有相同的结果。

0

试试这个当会话打开

try { 
      PackageInfo info = getPackageManager().getPackageInfo("YOUR_PACKAGE_NAME", PackageManager.GET_SIGNATURES); 
      for (Signature signature : info.signatures) { 
       MessageDigest md = MessageDigest.getInstance("SHA"); 
       md.update(signature.toByteArray()); 
       Log.d("KeyHash:", Base64.encodeToString(md.digest(), Base64.DEFAULT)); 
       } 
     } catch (NameNotFoundException e) { 

     } catch (NoSuchAlgorithmException e) { 

     } 
+0

我也试过这个从这个链接http:// stackoverflow .com/questions/5989237/generate-hash-key-for-app-using-facebook-sdk但是没有运气。 –

+0

@SureshSharma在MainActivity中添加此代码onCreate()方法 – morroko

+0

是的,我已经做到了......我在我的应用程序中有主要活动。我通过在onCreateMethod中使用此方法创建了散列键。只需将它从DDMS logcat复制并粘贴到Facebook开发人员门户的本机Android应用程序部分中的散列键字段即可。但仍然无法正常工作。请让我知道如果我失去了一些东西。 –