2016-01-30 42 views
7

Jestem jednym z wielu użytkowników migrujących z Parse i na Heroku (z piaskownicą MongoLab), używając jako przewodnika https://parse.com/docs/server/guide.Błąd przy użyciu Facebooka Zaloguj się przy użyciu serwera analizy parse

Podczas migracji wszystko było w porządku (obiekty można tworzyć/pobierać za pomocą poleceń REST na zdalnym repozytorium), dopóki nie spróbowałem użyć (iOS) logowania na Facebooku.

Metoda:

[PFFacebookUtils logInInBackgroundWithReadPermissions: ... ] 

który pracuje podczas parsowania gospodarzem, teraz zwraca następujący błąd:

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

Uwaga: tylko zmiany do mojego (poprzednio pracujący) iOS kod ma wskazywać serwer Parse na moje nowe, obsługiwane ręcznie repozytorium, jak pokazano poniżej:

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) 

& jedyna modyfikacja open source kodu Parse Server (https://github.com/ParsePlatform/parse-server-example) jest zastąpienie konfigurację, aby dopasować mój Parse identyfikacji/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*>' 
}); 

Odpowiedz

8

trzeba dodać klucz facebookAppIds który zawiera tablicę ważnego facebook Identyfikatory aplikacji są wymienione w dokumentach here.

alternatywnie dodać klucz FACEBOOK_APP_ID wymieniony [tutaj] (https://github.com/ParsePlatform/parse-server/issues/82)

+0

Wow, dziękuję za wskazanie tego. Dziwnie jednak dostaję ten sam błąd nawet po włączeniu tej linii i przekazaniu jej na serwer -> facebookAppIds: ['

+0

W tym [poradniku] (https: //parse.com/docs/server/guide#migrating), przeczytałem następujące: ** Zezwalaj na autoryzację FB - Ta opcja jest dostępna na serwerze analizy składni, jeśli skonfigurowano identyfikator aplikacji Facebook. ** Nie wiem, czy przez " Jest to dostępne "oznacza, że ​​zezwolenie na Facebook Auth jest boolowskim ustawieniem konfiguracyjnym, które trzeba włączyć, lub jeśli ma się włączyć automatycznie, jeśli jest ustawiona tablica facebookAppIds. Przyjąłbym to drugie. –

+1

Napotkałem inną możliwość na serwerze Parse [wydania] (https://github.com/ParsePlatform/parse-server/issues/82). Możesz także dodać zmienną środowiskową: FACEBOOK_APP_ID. Jednak istnieje obecnie [błąd] (https://github.com/ParsePlatform/parse-server/issues/104), w którym nie można zmienić żadnych danych związanych z PFUser, gdy jest on tworzony za pośrednictwem logowania FB. – Adamontherun

3

ja nie wiem, czy już lub próbował to już, ale byłem w bardzo podobnej sytuacji jak ty i co to za stałe mnie było to:

w AppDelegate.swift The ParseClientConfiguration muszą być inicjowane PRZED inicjalizacji Parse Facebook Utils w 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) 

... 

Mam nadzieję, że to pomoże przynajmniej komuś!

0

Miałem ten sam problem na serwerze Parse działającym w Back4app. Rozwiązaniem było dodanie identyfikatora aplikacji Facebook na platformie Back4app.