Подтвердить что ты не робот

Facebook iOS Safari "Не удается открыть ошибку страницы" при аутентификации пользователя с помощью единого входа

Я крутился по кругу с этой проблемой - и похоже, что у Facebook есть открытые билеты, но я хотел посмотреть, есть ли у кого-то такая же проблема, что у меня есть, и нашел временное или лучшее решение.

Я скачал Facebook "DemoApp" и могу поместить в свой appId в свой info.plist так: fb1234567890 (где 1234567890 - это мой appId). Он может аутентифицировать пользователя с помощью многозадачности для Safari, ввода моих учетных данных, предоставления доступа к моему приложению, а затем перенаправления обратно на "DemoApp" со мной вошедшим в систему (и я могу запросить мою информацию в порядке).

СЕЙЧАС, я пытаюсь интегрировать функциональность DemoApp в существующее приложение.

Я могу получить доступ к экрану входа и ввести свои учетные данные. Это позволяет мне предоставить моему приложению доступ к моей личной информации - я нажимаю allow, а Safari обрабатывает новый запрос, а затем возвращает сообщение : Safari cannot open the request because the address is invalid по URL-адресу: http://www.facebook.com/connect/uiserver.php

ОДНАКО, Если у меня есть DemoApp, установленный на моем симуляторе и моем собственном приложении, он переключит BACK на DemoApp с моим успешным входом. Если я удалю DemoApp и повторю попытку с моим приложением, я получаю ошибку Safari.

ЧТО МОЖЕТ СДЕЛАТЬ РЕШИТЬ ЭТО? Любая помощь будет отличной; Я стучаю в голову.: (

Мой info.plist:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
    <key>CFBundleURLTypes</key>
    <array>
        <dict>
            <key>CFBundleURLName</key>
            <string></string>
            <key>CFBundleURLSchemes</key>
            <array>
                <string>fb1234567890</string>
            </array>
        </dict>
    </array>
    <key>CFBundleDevelopmentRegion</key>
    <string>English</string>
    <key>CFBundleDisplayName</key>
    <string>${PRODUCT_NAME}</string>
    <key>CFBundleExecutable</key>
    <string>${EXECUTABLE_NAME}</string>
    <key>CFBundleIconFile</key>
    <string></string>
    <key>CFBundleIdentifier</key>
    <string>com.yourcompany.${PRODUCT_NAME:rfc1034identifier}</string>
    <key>CFBundleInfoDictionaryVersion</key>
    <string>6.0</string>
    <key>CFBundleName</key>
    <string>${PRODUCT_NAME}</string>
    <key>CFBundlePackageType</key>
    <string>APPL</string>
    <key>CFBundleSignature</key>
    <string>????</string>
    <key>CFBundleVersion</key>
    <string>1.0</string>
    <key>LSRequiresIPhoneOS</key>
    <true/>
    <key>NSMainNibFile</key>
    <string>MainWindow</string>
</dict>
</plist>
4b9b3361

Ответ 1

Неверная запись CFBundleURLTypes. Он должен выглядеть следующим образом:

<key>CFBundleURLTypes</key>
<array>
    <dict>
        <key>CFBundleURLSchemes</key>
        <array>
            <string>fb1234567890</string>
        </array>
    </dict>
</array>

Ответ 2

У меня был очень похожий опыт. Я обнаружил, что изменения plist, которые я делал, просто не были поглощены симулятором даже после чистой сборки. Я смог их заставить, изменив настройку Hardware- > Device на что-то другое, а затем обратно. Как бы то ни было, это, по-видимому, вызвало изменения plist для регистрации в ОС на симуляторе, в то время как ничего другого, что я сделал, не имело такого эффекта. Не уверен, что это "правильный" способ сделать это, или если что-то в настройках сборки испорчено, но для меня это действительно работало над конкретной проблемой, которую вы описываете.

Ответ 3

Ответы по меткам помогли мне в правильном направлении, но моя проблема была немного иной. По какой-то причине plist выглядел так:

<key>CFBundleURLTypes</key>
<array>
    <dict>
        <key>CFBundleURLSchemes</key>
        <array>
            <string>fb1234567890
[defaults setObject:[facebook expirationDate] forKey:@&quot;FBExpirationDat</string>
        </array>
    </dict>
</array>

Я только что удалил данные после id и был исправлен:

<key>CFBundleURLTypes</key>
<array>
    <dict>
        <key>CFBundleURLSchemes</key>
        <array>
            <string>fb1234567890</string>
        </array>
    </dict>
</array>