Facebook iOS Safari «Не удается открыть страницу ошибки» при аутентификации пользователя с помощью единого входа - PullRequest
27 голосов
/ 27 февраля 2011

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

Я скачал "DemoApp" на Facebook и могу добавить свой 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 на моем симуляторе и моем собственном приложении, он переключится НАЗАД на 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>

Ответы [ 3 ]

38 голосов
/ 25 мая 2011

Запись CFBundleURLTypes неверна. Это должно выглядеть так:

<key>CFBundleURLTypes</key>
<array>
    <dict>
        <key>CFBundleURLSchemes</key>
        <array>
            <string>fb1234567890</string>
        </array>
    </dict>
</array>
6 голосов
/ 07 мая 2011

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

3 голосов
/ 20 июня 2012

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

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

Я просто удалил данные после идентификатора и это было исправлено:

<key>CFBundleURLTypes</key>
<array>
    <dict>
        <key>CFBundleURLSchemes</key>
        <array>
            <string>fb1234567890</string>
        </array>
    </dict>
</array>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...