2

Я хотел бы подписать пользователей в свое приложение React-Native, используя Parse и Facebook, но похоже, что SDK для Facebook JS зависит от dom. Как я могу войти в систему с помощью facebook?React Native и Parse.FacebookUtils

В настоящее время я использую https://github.com/magus/react-native-facebook-login, чтобы зарегистрировать пользователя изначально, поэтому у меня есть доступ к их токену аутентификации, ect. Но не может использовать Parse.FacebookUtils.login() без SDK FB JS.

ответ

4

Если у вас есть authData из родного FB SDK, вы можете обойти FacebookUtils.init() называют полностью. Это должно войти в систему пользователь Разбор с FB:

Parse.User._logInWith('facebook', { 
    authData: { 
    id: FB_USER_ID, 
    access_token: USER_ACCESS_TOKEN, 
    expiration_date: TOKEN_EXPIRATION_DATE 
    } 
}); 

Это будет возвращать обещание, так же, как Parse.FacebookUtils.logIn()

+0

Кажется, этот путь кода по-прежнему требует наличия FB JS SDK – Tarrence

+1

Это не вызов 'Parse.FacebookUtils.init() '? Все ссылки на 'FB' исключаются, если провайдер аутентификации никогда не регистрируется в Parse SDK –

+0

. Ах, вы правы. Я все еще звонил init() – Tarrence

0

В React Native вы можете войти в систему с помощью Facebook, используя RCTBridgeModule/NativeModules API.

По сути, вам нужно написать собственный модуль, который может напрямую обращаться к встроенному API-интерфейсу Facebook Login Manager.

Дополнительная информация об этом процессе here.

+0

Спасибо. Я регистрирую пользователя в естественном порядке, я хотел бы использовать токен auth для регистрации пользователя в parse – Tarrence

1

Мне удалось обойти это, комментируя ссылки на FB в потоке Parse SDK Parse.FacebookUtils.logIn и удаляя проверки безопасности. FB SDK на самом деле не требуется для аутентификации пользователя с помощью Parse, если у вас уже есть объект authData.

Очевидно, что не является идеальным решением, поэтому, оставляя это открытый

0

Parse.FacebookUtils.logIn на самом деле не полагаться на FB JS SDK, так вы можете вызвать его напрямую (до тех пор, пока вы проходите в объекте authData).

В случае, если это полезно кому-либо еще, я столкнулся с трудностями при связывании и отмене учетных записей с учетными записями Facebook. Например, метод unlink полагается на SDK FB JS. Я работал вокруг этого 1. Не называя Parse.FacebookUtils.init, 2. создание "фальшивый поставщика Facebook":

var FakeFacebookProvider = { 
    getAuthType: function() { 
    return 'facebook'; 
    }, 
    restoreAuthentication: function() { 
    return true; 
    }, 
}; 

и 3. проходящее это к Parse.User._isLinked и Parse.User._unlinkFrom:

if (user._isLinked(FakeFacebookProvider)) { 
    user._unlinkFrom(FakeFacebookProvider, { 

До сих пор это хорошо работает. Вероятно, это приведет к тому же, что и ответ Таренса, без необходимости редактировать код Parse.

Нам действительно нужна настоящая совместимая версия React Native Parse.FacebookUtils, которая не полагается на FB JS SDK!