Change the FB login button text (react-native-fbsdk)

25,771

Solution 1

The easiest way is to upgrade the SDK to 4.19.0:

The LoginButton UI is changed in 4.19.0. Instead of "Log in with Facebook", the button now displays "Continue with Facebook". The button color is changed to #4267B2 from #3B5998. The button height is decreased from 30dp to 28dp due to use of smaller font size and paddings around a larger Facebook logo.

The interface for using LoginButton remains the same. Please take time to ensure the updated LoginButton does not break your app's UX

However, if you're after customising the text so it literally says "Continue with fb" you'd need to recreate the Button component, and use it to trigger the Login Manager, i.e.:

import React, { Component } from 'react'
import { Button } from 'react-native'

import { LoginManager } from 'react-native-fbsdk'

export default class Login extends Component {
  handleFacebookLogin () {
    LoginManager.logInWithReadPermissions(['public_profile', 'email', 'user_friends']).then(
      function (result) {
        if (result.isCancelled) {
          console.log('Login cancelled')
        } else {
          console.log('Login success with permissions: ' + result.grantedPermissions.toString())
        }
      },
      function (error) {
        console.log('Login fail with error: ' + error)
      }
    )
  }
  render () {
    return (
      <Button
        onPress={this.handleFacebookLogin}
        title="Continue with fb"
        color="#4267B2"
      />
    )
  }
}

That way also gives you full control over the UI which is particularly handy if you have your own components library, or use a ready made one like NativeBase.

Solution 2

You can use your custom function and add Login Manager into your function.

Here is the code

import { LoginManager } from "react-native-fbsdk";

const loginWithFacebook = () => {
  LoginManager.logInWithPermissions(["public_profile", "email"]).then(
    function(result) {
      if (result.isCancelled) {
        console.log("==> Login cancelled");
      } else {
        console.log(
          "==> Login success with permissions: " +
            result.grantedPermissions.toString()
        );
      }
     },
     function(error) {
      console.log("==> Login fail with error: " + error);
     }
   );
}

Call it in your custom button

<TouchableOpacity onPress={() => loginWithFacebook()}>
  <Text> Login With Facebook </Text>          
</TouchableOpacity>
Share:
25,771

Related videos on Youtube

perrosnk
Author by

perrosnk

Updated on July 09, 2022

Comments

  • perrosnk
    perrosnk almost 2 years

    I am using react-native-fbsdk. How can I change the fb login button text from 'Login with facebook' to 'Continue with fb'?

    The component looks like this, and I can't find a way to change it:

    <LoginButton
              style={styles.facebookbutton}
              readPermissions={["public_profile", 'email']}
              onLoginFinished={
                (error, result) => {
                  if (error) {
                    console.log("login has error: " + result.error);
                  } else if (result.isCancelled) {
                    console.log("login is cancelled.");
                  } else {
                    AccessToken.getCurrentAccessToken().then(
                      (data) => {
                        console.log(data);
                        console.log(data.accessToken.toString());
                      }
                    )
                  }
                }
              }
              onLogoutFinished={() => alert("logout.")}/>
    
    • andyrandy
      andyrandy over 7 years
      afaik it is not possible to change the next in the official android loginbutton plugin, so i assume it´s not possible with the react native fbsk either. you should not change the text anyway, users should always know for sure what they can expect: a "login".
    • perrosnk
      perrosnk over 7 years
      Here (developers.facebook.com/docs/facebook-login/userexperience) sats you can and possibly should change it, because it converts better. Please check the button design section
    • andyrandy
      andyrandy over 7 years
      you may need to create your own login button then
    • Fab
      Fab over 7 years
      I have the opposite problem... i have continue with facebook, which by the way doesn't even fit.... to login with FB.
    • Arkon
      Arkon over 7 years
      Same problem here. How to customize this button ? Thanks
  • vma
    vma about 7 years
    Do you know how to request both read and publish permissions with LoginManager?
  • designorant
    designorant about 7 years
    You shouldn't be modifying node_modules as they are managed by npm/yarn and will get replaced with any update/upgrade/reinstall.
  • designorant
    designorant about 7 years
    I guess you would have to chain LoginManager.logInWithReadPermissions and LoginManager.logInWithPublishPermissions in a promise or something but bear in mind users don't like to be asked for a ton of permissions before they ever get to use the app. It's a common practice to request an absolute minimum at login, and then ask for more permissions in context as they use the app. See: developers.facebook.com/docs/facebook-login/…
  • Rushi trivedi
    Rushi trivedi almost 6 years
    @designorant method call is nor working inside fb method.
  • Gabriel Belini
    Gabriel Belini about 5 years
    Avoid using fixed values and also, avoid modifying node_modules, you should use comments for answers like this
  • michael_vons
    michael_vons over 4 years
    Do use LoginManager.logInWithPermissions() instead of LoginManager.logInWithReadPermissions()