2017-01-25 49 views
7

Tepki-native-fbsdk kullanıyorum. fb giriş düğmesi metnini 'facebook ile giriş yap' dan 'fb ile devam et' olarak nasıl değiştirebilirim?FB giriş düğmesi metnini değiştirin (react-native-fbsdk)

bileşen şöyle ve bunu değiştirmek için bir yol bulamıyor:

<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.")}/> 
+0

afaik resmi android loginbutton eklentisinde bir sonraki değiştirmek mümkün değildir, bu yüzden ya da yerel fbsk tepki ile mümkün olmadığını varsayalım. yine de metni değiştirmemelisiniz, kullanıcılar her zaman ne bekleyebileceklerini bilmelidir: bir "giriş". – luschn

+0

Burada (https://developers.facebook.com/docs/facebook-login/userexperience) yapabildiğiniz ve değişmesi gerektiği için satıyor, çünkü daha iyi dönüşüyor. – perrosnk

+0

nolu düğme tasarım bölümünü kontrol ederek kendi oturum açma butonunuzu oluşturmanız gerekebilir. – luschn

cevap

15

kolay yolu upgrade the SDK to 4.19.0 şudur:

LoginButton UI 4.19 değiştirilir. 0. "Facebook ile giriş yap" yerine, şimdi "Facebook ile Devam Et" düğmesi görüntülenir. Düğme rengi # 3B5998'den # 4267B2'ye değiştirildi. Düğme yüksekliği, daha büyük bir Facebook logosu etrafında daha küçük yazı tipi boyutu ve dolgu kullanımı nedeniyle 30dp'den 28dp'ye düşürüldü.

LoginButton'u kullanma arabirimi aynı kalır. Eğer tam anlamıyla Düğmesi bileşenini yeniden gerekiyordu "fb ile devam et" diyor böylece metni özelleştirme sonra iseniz,

Ancak uygulamanızın UX'i kesilmez güncellenmiş LoginButton sağlamak için zaman ayırın ve lütfen Login Manager, yani tetiklemek için kullanabilirsiniz:

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" 
     /> 
    ) 
    } 
} 

Bu şekilde ayrıca kendi bileşenleri kütüphane var ya NativeBase gibi bir tane yapılmış bir hazır kullanırsanız özellikle kullanışlı olan UI üzerinde tam kontrol sağlar.

+0

LoginManager ile hem okuma hem de yayınlama izinlerinin nasıl yapıldığını biliyor musunuz? –

+0

Sanırım bir oturumda "LoginManager.logInWithReadPermissions" ve "LoginManager.logInWithPublishPermissions" öğelerini zincirlemeniz gerekiyor, ancak kullanıcıların uygulamayı kullanmaya başlamadan önce bir ton izin almaları istenmiyor. Girişte mutlak bir minimum talep etmek için yaygın bir uygulamadır ve uygulamayı kullandıkça bağlamda daha fazla izin isteyin. Bkz .: https://developers.facebook.com/docs/facebook-login/best-practices#context – designorant

0

Düğmeyi özelleştirmek isteyenler için metnini değiştirme yolunu bulamadım, ancak bu düğmenin genişliğini ve yüksekliğini node-modules/react-native-fbsdk/js/FBLoginButton.js içinde değiştirebilirsiniz. metin 'Facebook'un ile devam' o yüzden burada 195 değerini yazdım

const styles = StyleSheet.create({ 
    defaultButtonStyle: { 
    height: 30, 
    width: 195, 
    }, 
}); 

iyi uyuyor.

+4

npm/iplik tarafından yönetilirken herhangi bir güncelleme/yükseltme ile değiştirilirken 'node_modules' değiştirilmemelisiniz./yeniden. – designorant