2016-12-23 2 views
2

J'utilise react-native-oauth et j'obtiens cette erreur (voir l'image rouge en bas) lorsque j'essaie d'autoriser. J'ai cherché et trouvé seulement ce similar unanswered question. Je regardais dans la source et trouvé where the error is raised sur la ligne 954 et il semble qu'il est parce que moduleIDs.count doit être égal methodIDs.count et paramsArrays.count:RCTBatchedBridge.m Erreur: Message de données invalide - tous doivent être de longueur:% zd. React Native, simulateur iOS

if (RCT_DEBUG && (moduleIDs.count != methodIDs.count || moduleIDs.count != paramsArrays.count)) { 
RCTLogError(@"Invalid data message - all must be length: %zd", moduleIDs.count); 

Ainsi, toujours en the source, je regarde ces objets et les trouver définis juste au-dessus, sur les lignes 943-945 et ils utilisent RCTConvert, dont les fonctions "... acceptent toutes une valeur JSON comme entrée et la mappent à un type ou à une classe Objective-C native." Par conséquent, il semble que ce soit une erreur liée au réseau et/ou à la transpiration. Mais je n'ai pratiquement aucune connaissance dans ces domaines et je sens que j'ai fait obstacle à l'enquête et je me demandais si quelqu'un avait des idées pour aller de l'avant. Etre novice à React Native et n'avoir jamais fait d'Objective-C ne m'aide pas.

Aussi, voici mon code générant les erreurs.

import OAuthManager from 'react-native-oauth'; 
import { 
Alert 
} from 'react-native' 
var env = require('../environment.js') 
const config = { 
    facebook: { 
    client_id: env.getKey("FB_ID"), 
    client_Secret: env.getKey("FB_SECRET") 
    } 
} 
const manager = new OAuthManager('myAppName') 
manager.configure(config); 
exports.authWithFb =() => { 
    manager.authorize('facebook') 
    .then(resp => Alert.alert('response!' + resp)) 
    .catch(err => Alert.alert('error msg here: ' + err)); 
} 

Je suppose que cette erreur non définie est liée à l'erreur RCTBridge mais je ne suis pas sûr. Vous pouvez voir ci-dessous quand je alerte l'erreur de manager.authorize. TypeError: undefined is not an object (evaluating 'fn'):

enter image description herethis error

Edit:

Lorsque je tente d'alerter l'objet config, je reçois une erreur de ne pas être en mesure de stringify il est sous-objet. enter image description here

Lorsque vous dans la console Débogueur de chrome, je reçois « Impossible de lire la propriété « configureProvider » undefined » et configureProvider() est ce que react-native-oauth utilise donc il semble que le gestionnaire est pas configuré correctement, alors peut-être je ne suis pas un lien bibliothèque bien. Avoir vérifié la liaison a fonctionné. Im creuser dans les erreurs un peu et il semble un problème lié à la promesse/rappel NativeModules.OAuthManager. L'erreur détectée est: TypeError: Cannot read property 'authorize' of undefined. Quand je saute dans la trace de la pile, je trouve: enter image description here

Toute aide est très appréciée, merci.

Répondre

1

Vous obtiendrez cette erreur lorsque vous enverrez des données erronées dans le côté natif. Par exemple si vous devez passer une chaîne mais que vous avez passé un objet.

Veuillez consoler.log votre variable config.

https://www.npmjs.com/package/react-native-oauth

Je suppose que vous avez envoyé des données erronées dans le côté natif

+0

Veuillez également vous assurer que vous avez correctement lié la bibliothèque –

2

Donc, pour moi ce qui se passait mal était un problème de configuration avec react-native-oauth parce que tout s'est fixé depuis que je suis à révulsés un point où mon code n'avait pas d'autres dépendances (j'ai également installé Firestack) et j'ai recommencé à zéro après les docs de react-native-oauth.J'ai réalisé qu'il y avait un pas du côté iOS/XCode que j'avais manqué parce que quand je l'origine essayé, je ne pouvais pas trouver le fichier si juste sauté cette étape:

De react-native-oauth readme

Next, navigate to the neighboring "Build Phases" section of project settings, find the "Link Binary with Library" drop down, expand it, and click the "+" to add libOAuthManager.a to the list.

Les erreurs Je me trouvais à quelques pas de cela, mais je suis sûr que connecté en quelque sorte. Leçons apprises: n'essayez pas de faire trop de choses à la fois et ne sautez pas les étapes requises.