HOME
|
COMMUNITY
|
BLOG
|
Login Users With Facebook in React Native

Login Users With Facebook in React Native

In short

This article guides users through the complex process of installing fbsdk in React Native, addressing its incompatibility with rnpm. The step-by-step tutorial covers installing fbsdk, integrating CocoaPods, adding pods, cleaning up libraries, fixing linker warnings, and following fbsdk instructions. The guide aims to simplify the installation process, acknowledging its complexity and providing comprehensive instructions for successful setup.

Introduction

Recently there’s been a lot of reports from users saying that the overall installation process of installing fbsdk is rather complicated, especially given the fact it does not yet work with rnpm.

There are two main reasons that make fbsdk incompatible at this point:

  • It ships with multiple native packages inside a single npm package. That issue has been raised by the community quite a few weeks ago, but since it was only fbsdk that shipped that way, we have marked it as a community responsibility as it sounded like a very specific use-case,
  • It has been set up with CocoaPods in mind, meaning that it does not work when linked the standard way, as featured in React Native docs. The reason for that is the lack of relative header search paths specified in the xcodeproj.

Today, I have spent more than 30 minutes with Mateusz Zatorski setting it up in one of our projects and as a result — I have decided to write a step-by-step guide that, hopefully, will enable you to get it installed without too much trouble. So, let’s get started!

In order to follow the next steps, you will need to have CocoaPodsinstalled. If you haven’t done so yet, you can follow the official installation instructions.

If you encounter any problems during this step, contact us and we‘ll see what we can do to help.

Step 1: Installing fbsdk

First thing we will have to do is install the fbsdk from npm registry. You can do this by running the following command from within your project folder:

Step 2: Setting up our podfile

Once this installation has completed, we’ll need to integrate CocoaPods into our project. This gives us the ability to add fbsdk and any other native libraries that we may need in the future.

You can do so with the following command:

As a result, we should now have an empty Podfile in the ios folder.

Step 3: Adding pods

Open up the Podfile with your editor of choice, and you should see the following:

adding pods

There should be two targets, one is your main target (your app, similar to dependencies) and the second one is your tests (similar to devDependencies).

As you may be guessing, we are going to add fbsdk to the app dependencies as it’s the core functionality of our app.

After adding fbsdk, your Podfile should look like this:

podfile

Don’t save and leave your editor just yet — we will have to do one more thing in the next step.

Step 4: Adding more pods

Personally, this is the most confusing step in this entire guide. We have to add React Native to Podfile itself. You may be wondering why that’s needed as you already have it inside Libraries group (React.xcodeprojand friends).

The answer is simpler than you may think.

CocoaPods, simply said, is similar to npm 2 — fbsdk defines peerDependency on React Native. Since React Native itself has only been added to our xcodeprojCocoapods has no knowledge that it exist. As a result, it will implicitly install React from its own registry — that is stuck on 0.11 since the core team has stopped publishing it since then.

Thankfully, the version we download from the npm registry contains a local podspec (think package.json) we can use to tell CocoaPods that we have React Native installed there.

After adding React Native, your Podfile should look similar to the this:

after adding React Native

Note: Some packages like react-native-vector-icons also have their podspec files. If you decide to include these packages that way, don’t forget to also clean them up from `Libraries` as described in next step.

Step 5: Cleaning up libraries

In the previous step we have added almost all the packages from React Native, including Push Notifications (RCTPushNotifications) and Linking (RCTLinkingIOS).

We now have them defined again in the Libraries group as well:

libraries group

In this step, you will have to do two things:

  • go to Libraries group and remove all xcodeproj references that you have in your Podfile (select file, click backspace and select “remove references” option)
removing reference
  • go to Podfile and remove anything extraneous (for example, if you’ve never used push notifications, you can safely get rid of it).
removing

Once that’s done, close Xcode and you should finally be able to install all the things with:

Give it a minute or two to fetch all the things.

When it completes, you should get two warnings about linker flags (don’t worry, we will fix them in the next step) and a new file: xcworkspace.

xcworkspace

From now on, every time you open up your project with Xcode, you will need to choose the xcworkspace file instead of the xcodeproj file.

Tip: Consider adding the following to your package.json.

package json
Every time you run `npm install`, CocoaPods will fetch its dependencies as well

Step 6: Fixing linker warnings

The project created by default with react-native init does not have an $(inherited) flag in your Linker Flags. That will result in tons of errors when compiling your project. If the error message you get says that no symbols were found for the current architecture, chances are you need to redo this step.

To fix this, simply go to Build of your project, find Other Linker Flags and add $(inherited) so that the final list looks like on this picture below:

Linker flags
As you can see, the value has a list of flags inferred from the Pods project instead of $(inherited) value

Note: Every time you run react-native upgrade, you may need to repeat this step. Pay attention to the `git diff` after doing the upgrade.

Step 7: Clean up the project

Before we finally hit run — we have to go to Product -> Clean. This will clean the cache and any artifacts left from previous builds.

clean up the project
If you want, you can also use the CMD + SHIFT + K shortcut

Step 8: Follow FBSDK instructions

The fbsdk React Native package installs the iOS FacebookSDKautomatically. However, there are still two things you have to do that are nicely described in the official docs (skip step 1 and 2 as we’ve already done them) and the guide for developers.

After you’ve followed the above instructions, you should have the following settings in your Info.plist:

info plist 1

and

info plist 2

and a bunch of methods added to your AppDelegate.m

Things added by me following FBSDK docs were commented with `// Added by FBSDK`

Note: If the Facebook app doesn’t return back to your app after a successful authentication — you might need to make sure you’ve done all these steps.

Step 9: Run the app

Now — you can just hit Run from within Xcode and hopefully your React Native login works flawlessly!

run the app
Make sure your “TestApp” is selected in place of “UIExplorer”

Recap

Congratulations on getting to the end of this long arduous tutorial! We’re aware that there are simply too many steps to setup such a simple thing and are working on making it much nicer.

If you have some ideas to share, please leave a comment or visit rnpm/rnpm#144and let us know what you think. On a positive note — you now know how to use CocoaPods which effectively means you can install other SDKs without copying & pasting them to your repository.

Big thanks to Mateusz Zatorski for helping me with the list of steps required and to Dave Sibiski for proofreading it so quickly!

React Galaxy City
Get our newsletter
Sign up

By subscribing to the newsletter, you give us consent to use your email address to deliver curated content. We will process your email address until you unsubscribe or otherwise object to the processing of your personal data for marketing purposes. You can unsubscribe or exercise other privacy rights at any time. For details, visit our Privacy Policy.

Callstack astronaut
Download our ebook
Download

I agree to receive electronic communications By checking any of the boxes, you give us consent to use your email address for our direct marketing purposes, including the latest tech & biz updates. We will process your email address and names (if you have entered them into the above form) until you withdraw your consent to the processing of your names, or unsubscribe, or otherwise object to the processing of your personal data for marketing purposes. You can unsubscribe or exercise other privacy rights at any time. For details, visit our Privacy Policy.

By pressing the “Download” button, you give us consent to use your email address to send you a copy of the Ultimate Guide to React Native Optimization.