2

我正在尝试在我的 android 应用程序中实现一个 facebook-share 按钮。我遵循了官方的 facebook-android 文档,但是在对话框出现后(“...想要访问您的公共个人资料和朋友列表。取消/否”),没有任何反应。我正在回到我的按钮所在的活动。

这就是我打开对话框的方式:

@Override
public void onClick(View v)
{
   case R.id.btnFacebook:
      Session.openActiveSession(this, true, new Session.StatusCallback() {

         @Override
         public void call(Session session, SessionState state, Exception exception) {
         if (session.isOpened()){
            Request.executeMeRequestAsync(session, new Request.GraphUserCallback(){

               @Override
               public void onCompleted(GraphUser user, Response response) {
                  if (user != null){
                     Log.e("D", "Success " + user.getName());
                  }
                  else Log.e("D", "NOPE !");
                }
            });
         }
       }
     });
   break;
}

登录成功后应调用此方法:

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    super.onActivityResult(requestCode, resultCode, data);
    Session.getActiveSession().onActivityResult(this, requestCode, resultCode, data);
}

AndroidManifest.XML

<uses-permission android:name="android.permission.INTERNET"/>

<meta-data android:value="@string/app_id" android:name="com.facebook.sdk.ApplicationId"/>
<activity android:name="com.facebook.LoginActivity"></activity>

我还添加了 facebook SDK -build project-,我在 developers.facebook.com 上创建了一个应用程序 -添加了 sha1 key-。

我不知道发生了什么事。没有错误消息,也不例外。

4

1 回答 1

3

问题在于由 debug.keytool 生成的 SHA1 哈希密钥。不幸的是,我不知道为什么 debug.keytool 生成了不同的密钥哈希。

要获取 SHA1 密钥,您需要在developers.facebook.com(设置)和创建新应用程序的字段中提供,您可以使用以下代码获取它:

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    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) {

    }
    ...

用你的包名(不是你的班级)替换“com.facebook.samples.loginhowto”。你会得到你的钥匙。

于 2013-08-06T20:32:25.960 回答