2012-07-09 19 views
6

espero que pueda ayudarme con este problema.Facebook botón de inicio de sesión texto personalizado que revierte

que consiguió el código básico botón de acceso desde el sitio de desarrolladores de FB y lo estoy escribiendo como es:

<div id="fb-root"></div> 

<script>(function(d, s, id) { 
var js, fjs = d.getElementsByTagName(s)[0]; 
if (d.getElementById(id)) return; 
js = d.createElement(s); js.id = id; 
js.src = "//connect.facebook.net/en_GB/all.js#xfbml=1&appId=345451695525893"; 
fjs.parentNode.insertBefore(js, fjs); 
}(document, 'script', 'facebook-jssdk'));</script> 



<div class="fb-login-button" data-show-faces="false" data-width="200" data-max- rows="1">Test text</div> 

La única personalización que estoy haciendo es reemplazar el valor por defecto en "Iniciar Sesión" texto con mi propio texto (en este caso, "texto de prueba"). Esto funciona bien cuando estoy desconectado de Facebook, pero curiosamente, cuando inicio sesión en Facebook (a través del sitio de Facebook en otra pestaña), y luego vuelvo a visitar mi página, el texto personalizado parpadea, luego se presiona el botón una segunda vez con el texto predeterminado "Iniciar sesión".

¿Alguna idea, o esta es una función por diseño de Facebook?

+0

AFAIK - como está utilizando un complemento social de Facebook, está limitado a la funcionalidad que exponen. El código JS crea estilos y, obviamente, reescribe el elemento div para que el botón FB Like aparezca siempre donde sea que se use (y también toma en consideración la localización). Usted tiene la opción de verbo para usar para el botón - "Me gusta" o "Recomendar" - pero eso es todo afaik. – Snouto

+0

Graeme ... Noté que sucedía lo mismo en mi sitio, que ha estado mostrando el texto de inicio de sesión correctamente durante años. Parece que Facebook ha realizado algunos cambios no anunciados (o muy difíciles de encontrar) en el elemento fb-login-button. – byron

+0

Espero que Facebook tenga la culpa aquí. Pasé horas depurando hoy hasta que encontré esta pregunta. –

Respuesta

8

Teniendo en cuenta los recientes cambios en el componente fb-login-button (que hace aproximadamente una semana parece reescribir SIEMPRE el texto personalizado para "Iniciar sesión"), su mejor opción es crear una clase CSS personalizada para un Botón de Facebook y desencadenar FB.Login a través de Javascript. Eso es lo que hice y está funcionando muy bien.

Aquí hay un poco de CSS para un botón de Facebook que se ve exactamente como el botón estándar de Facebook y es compatible con el texto de encargo fácilmente:

a.fb-button { 
    color: #FFF; 
    display: inline-block; 
    text-decoration: none; 
} 

.fb-button { 
    background: #5F78AB; 
    background-image: url('http://static.ak.fbcdn.net/rsrc.php/v2/yf/r/S-DbSHszr4D.png'); /*COPY TO YOUR OWN IMAGE STORE*/ 
    background-repeat: no-repeat; 
    background-position: -1px -81px; 
    border-top: 1px solid #29447E; 
    border-right: 1px solid #29447E; 
    border-bottom: 1px solid #1A356E; 
    border-left: 1px solid #29447E; 
    -webkit-box-shadow: 0 1px 0 rgba(0, 0, 0, 0.1), inset 0 1px 0 #8A9CC2; 
    -moz-box-shadow: 0 1px 0 rgba(0, 0, 0, 0.1), inset 0 1px 0 #8a9cc2; 
    box-shadow: 0 1px 0 rgba(0, 0, 0, 0.1), inset 0 1px 0 #8A9CC2; 
    cursor: pointer; 
    font-family: 'lucida grande', tahoma, verdana, arial, sans-serif; 
    font-size: 13px; 
    font-weight: bold; 
    height: 23px; 
    line-height: 23px; 
    padding: 0px 5px 0px 30px; 
    text-align: left; 
} 

El elemento en su página sería

<a class="fb-button" onClick="fblogin();">Custom Text</a> 

Y luego un JS funcionar como

var fblogin = function() { 
    FB.login(function(response) { 
     if (response) { 
      if (response.authResponse) { 
       //successful auth 
       //do things like create account, redirect etc. 
      } else { 
       //unsuccessful auth 
       //do things like notify user etc. 
      } 
     },{scope:'email,publish_stream'}); //whatever perms your app needs 
}; 

Por supuesto, tendrá que incluir la raíz fb div en su página y e init el Facebook JS SDK antes de este

Así es como se ve:

Facebook button with custom text

Lo bueno de la CSS es que se puede utilizar para crear otros botones de Facebook en su sitio para cosas que no son compatibles (como Compartir) con un aspecto familiar. Incluso puede crear algunos css adicionales para permitir botones de diferentes tamaños. Acababas necesita tener diferentes posiciones de fondo de la imagen de fondo y diferentes tamaños de fuente, altura, etc. para

+0

Heh, parece que Facebook ha solucionado el problema y los botones de conexión FBML ahora muestran texto personalizado como solían hacerlo. Continua. – byron

+0

.... y luego hace dos días se detuvieron ... y hoy lo arreglaron nuevamente ... ¡Recomiendo encarecidamente seguir el método anterior y evitar la estupidez de FB! –

18

Uso siguiente para utilizar su texto personalizado

<div class="fb-login-button" data-show-faces="false" data-width="200" data-onlogin="afterLoginCallback()" login_text="Your Text" ></div> 

Aviso, propiedad login_text se proporciona para establecer el texto en el botón de inicio de sesión. Si no lo configura, sobrescribirá su texto con el predeterminado proporcionado por Facebook.

+1

Gran respuesta. Debería ser más calificado. La gente usa soluciones personalizadas raras donde la solución es simple. –

+0

parece que login_text no está documentado en ningún lado, pero funciona, ¡buen descubrimiento! – DrLightman

+0

¡Una respuesta mucho más simple y eficiente! ¡Gracias! –

2

o usted podría usar:

<div class="fb-login-button" data-login_text="Connect with FaceBook"></div> 

O

<fb:login-button show-faces="true" width="200" max-rows="1" login_text="Connect with FaceBook"></fb:login-button> 

fácil como 1,2,3 :)

1

probar esto, complemento entrada de datos de texto como este.

<div class="fb-login-button" 
    data-login-text="Sign in with Facebook" 
    data-max-rows="1" 
    onlogin="window.location.reload()" 
    data-size="large" 
    data-show-faces="false" 
    data-auto-logout-link="false"> 
</div> 
+0

funciona bien. –

Cuestiones relacionadas