2011-06-26 38 views
14

Solo quiero una confirmación.keytool con Android Facebook SDK

estoy desarrollando en las ventanas

que estoy tratando de integrar Facebook en una aplicación y la documentación del SDK dice que necesito 'exportar una firma'

A partir de aquí: http://developers.facebook.com/docs/guides/mobile/#android

Así dice que ejecute este comando:

keytool -exportcert -alias androiddebugkey -keystore ~/.android/debug.keystore | openssl sha1 -binary | openssl base64 

primero tuve que descargar openssl: OpenSSL

Ahora el comando anterior, supongo que debe ser convertido a:

"C:\path\to\java\keytool" -exportcert -alias your_alias -keystore "C:\path\to\your\keystore\keystore.name" | "C:\path\to\openssl_install\bin\openssl" sha1 -binary |"C:\path\to\openssl_install\bin\openssl" base64 
  • Así que quieres la herramienta de claves que se instala en su última versión de Java carpeta de instalación?
  • ¿Desea que el alias sea el nombre del alias que usa para una creación de apk normal en eclipse?
  • ¿Desea que el almacén de claves sea el que usa al exportar aplicaciones de Android?
  • ¿Quieres OpenSSL para ser el que acaba de instalar

Así que una vez que he hecho esto se le pide una contraseña: (se muestra la contraseña como que estoy escribiendo)

Si yo introducir una contraseña correcta consigo

'zR2tey1h9kqPRSW/yEYEr0ruswyD=' (changed for public)

pero si entro en una contraseña incorrecta todavía me devuelve un código en la forma de

'ga0RGNYHvTR5d3SVDEfpQQAPGJ1='?

Así que sí, sólo estaba buscando una confirmación de que estoy haciendo lo correcto, y este es el resultado esperado

+0

Buen blog explicando algunos escollos: http://sean.lyn.ch/2011/07/android-the-facebook-sdk-sso-and-you/ – Blundell

+0

¿Utilizaste 'android' como la contraseña de tu keystore ? –

Respuesta

1

sí lo está haciendo de una manera correcta i think.i también ejecuta este comando y puse este hash en mi aplicación fb y sus trabajos correctamente.

12

la mejor manera de obtener su hash es ejecutando el siguiente código:

try { 
      PackageInfo info = getPackageManager().getPackageInfo(getPackageName(), PackageManager.GET_SIGNATURES); 
      for (Signature signature : info.signatures) { 
       MessageDigest md; 

        md = MessageDigest.getInstance("SHA"); 
        md.update(signature.toByteArray()); 
        String something = new String(Base64.encode(md.digest(), 0)); 
        Log.e("hash key", something); 
     } 
     } 
     catch (NameNotFoundException e1) { 
      // TODO Auto-generated catch block 
      Log.e("name not found", e1.toString()); 
     } 

      catch (NoSuchAlgorithmException e) { 
       // TODO Auto-generated catch block 
       Log.e("no such an algorithm", e.toString()); 
      } 
      catch (Exception e){ 
       Log.e("exception", e.toString()); 
      } 

al extraer el hash con windows cmd, git bash o cygwing terminal, las tres herramientas dan resultados diferentes.

el más preciso es el código anterior

+0

@Mina ¿Cuál es la importancia para esa clase Base64? – Blundell

+0

Está incluido en Android 2.2, si está ejecutando una versión más baja, compila tu aplicación contra 2.2, ejecuta el código y obtiene el hash, luego compila la aplicación contra tu objetivo inicial. –

+0

Hmm ahora estoy aún más confundido porque me ha dado un código hash diferente al que obtuve usando mi método de pregunta – Blundell

0

respuesta a su pregunta a continuación:

So once I've done this it asks for a password: (it shows the password as I'm typing it)

If I enter a correct password I get

'zR2tey1h9kqPRSW/yEYEr0ruswyD=' (changed for public) but if I enter an incorrect password it still returns me a code in the form of

'ga0RGNYHvTR5d3SVDEfpQQAPGJ1='? So yeah, was just looking for a confirmation that I'm doing the right thing, and this is the output expected

keytool -exportcert -alias androiddebugkey -keystore ~/.android/debug.keystore | openssl sha1 -binary | openssl base64 tiene tres órdenes de alimentación de salida del anterior comando al siguiente comando.

  1. keytool -exportcert -alias androiddebugkey -keystore ~/.android/debug.keystore
  2. openssl sha1 -binary
  3. openssl base64

Cuando se da la contraseña del almacén de claves incorrectas, primer comando genera el error, pero eso no va a abrir ya que sería la entrada al segundo comando y diferente de hash es generado. Solo ejecute el primer comando de keytool (keytool -exportcert -alias androiddebugkey -keystore ~/.android/debug.keystore) para confirmar su contraseña de almacén de claves y si es correcta. Si la contraseña es incorrecta, se mostrará un resultado similar al siguiente.

> keytool -exportcert -alias androiddebugkey -keystore 

~/.android/debug.keystore Introduzca la contraseña del almacén de claves:
herramienta de claves de error: java.io.IOException: Keystore fue manipulado, o la contraseña era incorrecta

Proporcionar androide a responda por Enter keystore password: si se genera hash de depuración de Android. La contraseña por defecto para el almacén de claves de depuración androide es androide

comando también podría haber escrito para atrapar el error de comando herramienta de claves para ver si el comando 1 devolvió el error antes de ejecutar comandos 2.

So you want the keytool that is installed in your latest Java install folder?

You want the alias to be the name of the alias you use for a normal apk creation in eclipse?

You want the keystore to be the one you use when exporting android apps?

You want openssl to be the one you just installed?

sí a todas las preguntas anteriores . PATH podría configurarse para no escribir la ruta completa para keytool y openssl.

Cuestiones relacionadas