0

如果手机已经安装了 facebook 本机应用程序,它会在提供用户名和密码后转到该应用程序,它开始加载并显示弹出消息,使用浏览器在单击浏览器时告诉完成操作,它说 网页不可用。

fbconnect://success#sucess_token=CAA.. 的网页可能暂时关闭,或者它可能已永久移动到新的网址。没有调用应用程序的回调。

我已经正确创建了哈希键,我的应用程序 SSO 在 SDK 版本 2.0 中工作正常。所以它不可能是哈希键不匹配。当应用程序 SessionLoginBehavior.SUPPRESS_SSO 模式时,它按预期工作。

OpenRequest req=new OpenRequest(LoginActivity.this);
req.setPermissions(Arrays.asList("read_stream", "user_birthday","email"));
session.openForRead(req.setCallback(statusCallback));

有没有办法使用会话登录机制来实现 SSO 行为?我在没有找到答案的每个地方都进行了搜索。当那里的 Native facebook 应用程序开始失败时。

4

2 回答 2

0

要生成哈希键,请使用此代码。

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

        } catch (NoSuchAlgorithmException e) {

        }

thanks.
于 2013-08-04T13:11:55.877 回答
0

你可以这样使用它...

mBtnFacebook = (LoginButton) v.findViewById(R.id.btn_facebook);
mBtnFacebook.setReadPermissions(Arrays.asList("email", "user_birthday"));
mBtnFacebook.setLoginBehavior(SessionLoginBehavior.SSO_WITH_FALLBACK);

接着

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    super.onActivityResult(requestCode, resultCode, data);
    if (resultCode != 0) {
            Session.getActiveSession().onActivityResult(this, requestCode, resultCode, data);
            Session.openActiveSession(this, true, new Session.StatusCallback() {
                @Override
                public void call(final 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) {

                                }
                            }
                        });
                    } 
                }
            });
        }
    }

确保你在清单中有这个

<activity android:name="com.facebook.LoginActivity"
          android:screenOrientation="portrait"
          android:theme="@android:style/Theme.Translucent.NoTitleBar"
          android:label="@string/app_name" />

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

这个标签在标签内

应该是这样的:)

于 2013-05-31T09:40:30.190 回答