Ошибка при входе через Facebook с сервером Parse

Я один из многих пользователей, переходящих с Parse на Heroku (с песочницей MongoLab), используя https://parse.com/docs/server/guide в качестве руководства.

С миграцией все шло нормально (объекты можно создавать/извлекать с помощью команд REST в удаленном репо), пока я не попытался использовать (iOS) вход в Facebook.

Метод:

[PFFacebookUtils logInInBackgroundWithReadPermissions: ... ]

который работал при размещении Parse, теперь возвращает следующую ошибку:

[Error]: Facebook auth is invalid for this user. (Code: 101, Version: 1.12.0)

Примечание. Единственное изменение в моем (ранее работавшем) коде iOS — указать серверу Parse мой новый репозиторий, размещенный вручную, как показано ниже:

 let parseConfiguration = ParseClientConfiguration(block: { (ParseMutableClientConfiguration) -> Void in
        ParseMutableClientConfiguration.applicationId = "<*APP ID*>"
        ParseMutableClientConfiguration.clientKey = "<*CLIENT KEY*>"
        ParseMutableClientConfiguration.server = "https://<*HEROKU APP ID*>.herokuapp.com/parse"
    })

 Parse.initializeWithConfiguration(parseConfiguration) 

и единственная модификация кода Parse Server с открытым исходным кодом (https://github.com/ParsePlatform/parse-server-example) заменяет конфигурацию, соответствующую моей идентификации Parse/mongo:

var api = new ParseServer({
  databaseURI:     'mongodb://<*UNIUQUE ID*>' || 'mongodb://localhost:27017/dev',
  cloud: process.env.CLOUD_CODE_MAIN || __dirname + '/cloud/main.js',
  appId: '<*PARSE APP ID*>',
  masterKey: '<*PARSE MASTER KEY*>'
});

person Jacob Kyle    schedule 30.01.2016    source источник


Ответы (3)


вам нужно добавить ключ facebookAppIds, который содержит массив действительных идентификаторов приложений facebook, это упоминается здесь в документы.

в качестве альтернативы добавьте ключ FACEBOOK_APP_ID, как указано [здесь] (https://github.com/ParsePlatform/parse-server/issues/82)

person Adamontherun    schedule 31.01.2016
comment
Вау, большое спасибо, что указали на это. Как ни странно, я получаю ту же ошибку даже после того, как эта строка включена и передана на сервер --› facebookAppIds: ['‹*пятнадцатизначный код идентификатора приложения facebook*›'] - person Jacob Kyle; 31.01.2016
comment
В этом руководстве я прочитал следующее: Разрешить аутентификацию FB — это доступен на сервере Parse, если настроен идентификатор приложения Facebook. Не уверен, что это доступно, они означают, что разрешение Facebook Auth является логическим параметром конфигурации, который вам нужно включить, или если он должен включаться автоматически, если Установлен массив facebookAppIds. Я бы предположил последнее. - person Jacob Kyle; 31.01.2016
comment
Я столкнулся с другой возможностью в Parse Server проблемах. Вы также можете добавить переменную среды FACEBOOK_APP_ID. Однако в настоящее время существует [ошибка] (github.com/ParsePlatform/parse-server/issues /104), где вы не можете изменить какие-либо данные, связанные с PFUser, когда он создается через вход через FB. - person Adamontherun; 01.02.2016
comment
Это сработало! Теперь я вошел в систему. Это может быть очевидно для других пользователей, но вы должны указать идентификатор как целое число, а не строку: heroku config:set FACEBOOK_APP_ID=**‹FacebookID›** (не ставьте кавычки вокруг Я БЫ). - person Jacob Kyle; 01.02.2016
comment
Теперь у меня возникает множество других проблем, когда я пытаюсь использовать приложение с Parse Server, но я создам для них отдельный поток. Думаю, с моим уровнем репутации я не могу отметить это как принятый ответ. - person Jacob Kyle; 01.02.2016
comment
@JacobKyle есть известная ошибка при входе в FB. Сотрудники Parse изучают это [ссылка] (github.com/ParsePlatform/parse-server/ вопросы/104) - person Adamontherun; 01.02.2016
comment
проблема в моем комментарии выше была исправлена. - person Adamontherun; 10.02.2016
comment
Мне также пришлось разрешить все разрешения уровня класса для класса User, в частности, добавить поле - person Ryan; 16.03.2016
comment
Как упомянул @Ryan, это очень важно, вы должны выбрать «Добавить поле» из разрешения уровня класса _User! - person KBog; 02.07.2016

Я не знаю, было ли у вас это уже или вы уже пробовали это, но я был в очень похожей ситуации, и то, что исправило это для меня, было следующим:

В AppDelegate.swift ParseClientConfiguration должен быть инициализирован ДО инициализации Parse Facebook Utils в didFinishLaunchingWithOptions:

...

// *** Initialize Parse. ***
let config = ParseClientConfiguration(block: {
    (ParseMutableClientConfiguration) -> Void in
    ParseMutableClientConfiguration.applicationId = appKey;
    ParseMutableClientConfiguration.clientKey = clientKey;
    ParseMutableClientConfiguration.server = serverURL;
});

Parse.initializeWithConfiguration(config);

// *NOTE: Putting the following line after after Parse.initializeWithConfiguration(config) fixed the issue
// After this change, the user is no longer nil and does not print "Uh oh. The user cancelled the Facebook login.". Instead, it executes the `if let user = user` block
PFFacebookUtils.initializeFacebookWithApplicationLaunchOptions(launchOptions)

...

Надеюсь, это поможет хоть кому-то!

person dnadri    schedule 05.07.2016

У меня была такая же проблема на сервере Parse, работающем в Back4app. Решение состояло в том, чтобы добавить идентификатор приложения Facebook на платформу Back4app.

person JonyMateos    schedule 11.03.2017