android - Facebook Android SDK 登录后未打开 session

标签 android facebook sdk

1)这个问题出现了很多次,并且始终是“您的 key 哈希值错误”。

2) Facebook 文档告诉我们使用此代码来获取 key 哈希:

keytool -exportcert -alias MyKeyAlias -keystore path\to\my\Key | openssl sha1 -binary | openssl base64

3) 好的,这给了我那个 key :1yl************Q3A

当我尝试登录时,我收到以下消息: com.facebook.http.protocol.ApiException:(#404) key 哈希 XHA************q10 与任何存储的 key 哈希不匹配。

4) 然后我将 XHA*********q10 复制并粘贴到我的应用程序设置中,但这也不是我的 key 。

5)所以,我读到的文档是一个可以为您提供正确的 key 哈希的代码。这段代码:

// Add code to print out the key hash
try {
    PackageInfo info = getPackageManager().getPackageInfo(
            "com.facebook.samples.hellofacebook", 
            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) {

}

成功了!给了我这个哈希值:+HA*********q0=

6) 我将最后一个哈希值放在应用程序设置中,是的,现在我可以连接了!但是,现在我无法打开 session !!!

我使用以下代码:

public class FBActivity extends Activity {

    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.my_view);

        System.out.println("Start Facebook login");
        Session.openActiveSession(this, true, new Session.StatusCallback() {
            public void call(Session session, SessionState state, 
                                              Exception exception) {
                System.out.println("Call");
                if (session.isOpened()) {
                    System.out.println("Open");
                    Request.newMeRequest(session, new Request.GraphUserCallback() {
                        public void onCompleted(GraphUser user, Response response) {
                            System.out.println("Complete");
                            if (user != null) {
                                System.out.println(user.getName());

                            } else {
                                System.out.println("User NULL");
                            }
                        }
                    }).executeAsync();
                } else {
                System.out.println("Not open");
            }

        });
    }
}

日志是:

“开始 Facebook 登录

通话

未开放

通话

未开放”

我不知道还能做什么,因为我已经有了正确的 key 哈希并且可以登录。

最佳答案

我明白了:

缺少以下方法。只需添加它,一切就正常了。

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

关于android - Facebook Android SDK 登录后未打开 session ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25062095/

相关文章:

ios - 如何使用GLKMathProject? [GLKit-iOS]

android - Web 主机问题,要从 Android 浏览器下载的 .apk 文件

android - 从 native c 代码执行 Android 应用程序

php - 无法使用 Tera-WURFL 获得正确的手机屏幕尺寸

facebook - 使用具有永久页面访问 token 的 Instagram Graph Api 仅适用于某些帐户

javascript - 为什么 Facebook 建议在 <head> 标签之外为他们的跟踪像素添加事件代码/这有什么影响?

ide - SDK和IDE的区别

java - 在 Android Studio 中使用 Netbeans 的 JDK

facebook - 有没有什么方法可以获取最近 10 或 30 天内在 facebook 中添加的 friend 的详细信息

c# - 如何缩放 Kinect 相机?