Приложение Facebook Sample Session Login Application не работает, когда установлено собственное приложение Facebook

Если на телефоне уже установлено собственное приложение 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));

Есть ли способ реализовать поведение единого входа с использованием механизма входа в сеанс? У меня есть поиск везде, где я не нашел ответа. Когда приложение Native facebook там начинает давать сбой.


person ramz_adf    schedule 31.05.2013    source источник


Ответы (2)


Вы можете использовать это так...

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"/>

этот тег находится внутри тега

так и должно быть :)

person mbarisa    schedule 31.05.2013
comment
Наконец-то я разобрался с проблемой. При обновлении приложения для телефона facebook до последней версии эта проблема с перенаправлением веб-страницы SSO исчезла. Если у вас возникла такая же проблема, попробуйте обновить приложение facebook до более новой версии и попробуйте. Спасибо, mBarisa, за беспокойство. - person ramz_adf; 31.05.2013

для генерации хеш-ключа используйте этот код.

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.
person Thushara    schedule 04.08.2013