Подтвердить что ты не робот

Faceh хэш-ключ при использовании студии Android

Я использую android studio для разработки приложения, которое использует facebook sdk.

когда я использовал следующую команду

C:\Program Files\Java\jdk1.7.0_21\bin>keytool -exportcert -alias androiddebugkey
 -keystore "C:\Users\ninad\.android\debug.keystore" | "D:\OpenSSL\bin\openssl" s
ha1 -binary |"D:\OpenSSL\bin\openssl" base64

он вернул y5EquINHD6DvwVJFyJTuUEY3NSU =

при использовании этой хэш-клавиши facebook показывает ошибку

неверный параметр android_key. ключ c33Tm0FL_-kxyaPZq1JBLDh767U не соответствует ни одному разрешенный ключ.

Является ли хэш-ключ, необходимый для Facebook, при использовании eclipse и Android-студии? который среди них является моим правильным хэш-ключом?

Я добавил хэш-ключ к моему приложению в facebook. все же приложение показывает неверный параметр android_key.

4b9b3361

Ответ 1

Почему бы вам не попробовать этот код и проверить хеш-ключ, который вы используете. Из документов facebook:

Помимо двойной проверки шагов генерации хэш-кода ключа, вот еще один вариант, который гарантирует, что вы используете правильный хэш ключа. Это включает в себя изменение кода в одном из примеров приложений для печати подписи, отправленной на Facebook.

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    // Add code to print out the key hash
    try {
        PackageInfo info = getPackageManager().getPackageInfo(
                "your.package", 
                PackageManager.GET_SIGNATURES);
        for (Signature signature : info.signatures) {
            MessageDigest md = MessageDigest.getInstance("SHA");
            md.update(signature.toByteArray());
            Log.d("KeyHash:", Base64.encodeToString(md.digest(), Base64.DEFAULT));
            }
    } catch (NameNotFoundException e) {

    } catch (NoSuchAlgorithmException e) {

    }
}

Ответ 2

Вот ссылка для создания хеш-ключа в facebook:

public class FacebookHashKeyActivity extends Activity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_facebook_hash_key);
        try {
            PackageInfo info = getPackageManager().getPackageInfo("your.package.name", PackageManager.GET_SIGNATURES);
            for (Signature signature : info.signatures) {
                MessageDigest md = MessageDigest.getInstance("SHA");
                md.update(signature.toByteArray());
                Log.d("KeyHash:", Base64.encodeToString(md.digest(), Base64.DEFAULT));
            }
        } catch (NameNotFoundException e) {
            e.printStackTrace();
        } catch (NoSuchAlgorithmException e) {
            e.printStackTrace();
        }
    }
}

Код взят отсюда.

Ответ 3

просто запустите его в методе oncreate

private void printHashKey() {

    try {
        PackageInfo info = getPackageManager().getPackageInfo(
                "-----------PUT YOUR PACKAGE NAME ------------",
                PackageManager.GET_SIGNATURES);
        for (Signature signature : info.signatures) {
            MessageDigest md = MessageDigest.getInstance("SHA");
            md.update(signature.toByteArray());
            Log.d("KeyHash:", Base64.encodeToString(md.digest(), Base64.DEFAULT));
        }
    } catch (PackageManager.NameNotFoundException e) {
        e.printStackTrace();
    } catch (NoSuchAlgorithmException e) {
        e.printStackTrace();
    }

}

Ответ 4

Предполагая, что вы скопировали-вставьте из вывода openssl в настройки приложения facebook, чтобы не было никаких заметок относительно похожих символов O0 или 1l | или G6...

Недавно я поместил диагностическую программу в Play Store, которая показывает хэш-ключ, установленный для любого приложения на вашем телефоне. Найдите "GetKeyHash". Он показывает вам все приложения на вашем устройстве, отсортированные по ним, когда они были в последний раз обновлены, и вы можете расширить любой из них, чтобы увидеть ключевые хэши (ы), имя пакета и действительные имена активности. Правильное приложение GetKeyHash не запрашивает и не использует какие-либо специальные разрешения, и Android должен сказать это при установке.

Для запуска на симуляторе это также доступно в http://rightparen.com/android/GetKeyHash.apk.

Обратите внимание: если вы создадите отладочную версию своего приложения в среде IDE, хэш-ключ будет отличаться от той розничной версии, которую вы отправляете в Play Store. Вы можете добавить несколько ключевых хэшей для приложения в консоли разработчика Facebook, чтобы можно было использовать отладочные ключи, а также ваш розничный ключ.

Если это дает тот же результат, может быть ошибка. В качестве потенциального решения только для отладочного ключа можно создать резервную копию ~/.android/debug.keystore и удалить этот файл. В следующий раз, когда вы создадите, система Android создаст новый ключ, который может не вызвать ошибку. На этом этапе вам нужно будет удалить приложение с вашего устройства или вы получите сообщение об ошибке при установке apk, требующей подписания с тем же сертификатом. Затем вы можете использовать GetKeyHash, как указано выше, или любой из стандартных методов, чтобы получить новый хэш ключа и добавить его в свое приложение на facebook.

Ответ 5

Вы можете указать текущий псевдоним внутри этого файла. И тогда вы можете использовать правильное имя, чтобы получить хэш... , Оставьте пароль пустым, просто нажмите клавишу ввода...

keytool -list -keystore keystorefile

*****************  WARNING WARNING WARNING  *****************
* La integridad de la información almacenada en el almacén de claves  *
* NO se ha comprobado.  Para comprobar dicha integridad, *
* debe proporcionar la contraseña del almacén de claves.                  *
*****************  WARNING WARNING WARNING  *****************

Tipo de Almacén de Claves: JKS
Proveedor de Almacén de Claves: SUN

Su almacén de claves contiene 1 entrada

androiddebugkey, Sep 22, 2016, PrivateKeyEntry, 
Huella Digital de Certificado (SHA1): 3B:8F:DB:46:A0:B7:2E:37:E1:78:41:10:BD:D0:8A:FF:63:E0:94:22

Как вы можете видеть.. theres 1 key с именем androiddebugkey... возможно, в вашем случае у вас есть то, что... o не писал специфический, когда вы запускали:

{C:\Program Files\Java\jdk1.7.0_21\bin>keytool -exportcert -alias androiddebugkey
 -keystore "C:\Users\ninad\.android\debug.keystore" | "D:\OpenSSL\bin\openssl" s
ha1 -binary |"D:\OpenSSL\bin\openssl" base64
}

который вернет все, что захочет... в этом случае.

y5EquINHD6DvwVJFyJTuUEY3NSU=

Ответ 6

Мне лично нравится генерировать свой хэш внутри файла приложения build.gradle.

Эта функция build.gradle генерирует хэш в Windows (измените C:\\OpenSSL-Win64\\bin\\openssl на двоичное местоположение OpenSSL):

def getFacebookHash = { ->
    try {
        def stdOut = new ByteArrayOutputStream()
        def stdIn = new ByteArrayInputStream()
        exec {

            commandLine "keytool", "-exportcert", "-alias", KEY_ALIAS, "-keystore", STORE_FILE, "-storepass", STORE_PASSWORD
            standardOutput = stdOut
        }
        stdIn = new ByteArrayInputStream(stdOut.toByteArray())
        stdOut = new ByteArrayOutputStream()
        exec {
            standardInput = stdIn
            commandLine "C:\\OpenSSL-Win64\\bin\\openssl", "sha1", "-binary"
            standardOutput = stdOut
        }
        stdIn = new ByteArrayInputStream(stdOut.toByteArray())
        stdOut = new ByteArrayOutputStream()
        exec {
            standardInput = stdIn
            commandLine "C:\\OpenSSL-Win64\\bin\\openssl", "base64"
            standardOutput = stdOut
        }
        def hashString = stdOut.toString().trim()
        return hashString
    }
    catch (error) {
        return error.toString();
    }
}

Затем вы можете распечатать результат в любом месте Gradle script.

println "Facebook Release Key Hash: " + getFacebookHash()

Я сохраняю необходимые данные в gradle.properties:

STORE_FILE=C:/Keystore.jks
STORE_PASSWORD=password
KEY_ALIAS=keystoreAlias
KEY_PASSWORD=password

Ответ 7

Для отладки, если вы используете Eclipse, вам нужно будет сгенерировать этот хэш ключей с помощью отладочной клавиши Android. Когда вы будете готовы опубликовать свое приложение, вам нужно будет создать ключевое хеширование для ваших ключей подписи и обновить это значение в Facebook до того, как ваше подписанное приложение будет работать.

Посмотрите ниже ссылки

Android Facebook SDK: как создать не-отладочный хеш-ключ?

Нужно ли добавлять новый хэш хеширования в приложение Facebook при каждом изменении компьютера?