Сгенерированный Xamarin отладочный хеш ключа входа на Facebook не совпадает с сгенерированным терминалом хешем ключа - PullRequest
0 голосов
/ 18 мая 2018

Во-первых, процитирую Стива Джобса:

«Я опечален, не успехом Microsoft - у меня нет проблем с их успехом. (...) У меня проблема с тем, чтоони просто делают продукты действительно третьего сорта. "

JK.Теперь пошли.Я только что передал проект Xamarin в своей компании, и у меня действительно нет опыта работы с этой платформой, поэтому я подумал, что кто-то может просветить меня в некоторых моментах.

Я пытаюсь выполнить вход на Facebook в Debugрежим в физическом устройстве, но я просто не могу заставить работать ключ хеша.Выдает ошибку "Недопустимый хеш-ключ. Хеш-ключ xxxxxxxxx не соответствует ни одному из сохраненных хешей ky. Etc ...".

Я делал это много раз в Android Studio, и это всегда казалосьдовольно прямо.У меня есть настройка appId в моем AndroidManifest.xml, и я добавил хэши в Facebook для инструментальной панели Develops.Сейчас я следую учебному пособию Facebook по ключевым хэшам, но независимо от того, что я делаю, ключевой хэш, который я генерирую, всегда отличается от того, который отображается на моем устройстве.

Я на Mac, использую Visual Studio для Mac7,5.Сначала я попытался сгенерировать хеш, используя ~/.android/debug.keystore, но безуспешно.В ходе дальнейших исследований я обнаружил, что Xamarin фактически использует другое хранилище debug.keystore, расположенное в ~/.local/share/Xamarin/Mono for Android/debug.keystore, также с той же ошибкой.Еще одна любопытная вещь, которую я заметил, это то, что если я использую другой пароль, он дает мне другие хэши.

В поисках немного больше, я обнаружил, что есть способ генерировать ключи программно с использованием класса PackageManager но, так как я нахожусь в Ксамарине, мне трудно понять это.Я не могу найти Xamarin-эквивалент PackageManager.GET_SIGNATURES.

Теперь по вопросам:

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

    • Может быть, я использую неправильный пароль?Если так, как я могу изменить его или найти правильный?

    • Может быть, Visual Studio использует третье хранилище ключей, о котором я не знаю?Если да, как я могу узнать, какой файл хранилища ключей используется?

  2. Как заставить класс PackageManager работать в Xamarin?Я смотрел на их документы , но я действительно не мог понять это.

Спасибо!

РЕДАКТИРОВАТЬ

Я действительно использовал неправильный пароль.Что мне помогло, так это использование хранилища ключей, расположенного по адресу ~/.local/share/Xamarin/Mono for Android/debug.keystore с паролем android

1 Ответ

0 голосов
/ 19 мая 2018

Подробную информацию о хранилище ключей по умолчанию (отладке), используемом Visual Studio, на Mac и Windows можно найти в официальном документе .Вы можете увидеть псевдонимы и пароли в примере команды keytool .

Создаете ли вы приложение для устройства с версией выпуска?Это может объяснить использование другого файла хранилища ключей в зависимости от конфигурации проекта.То, что я видел в прошлом, когда пытался сгенерировать хеш для Facebook, но это не сработало, это то, что я на самом деле ввел неправильный пароль, когда его попросили.Если вы следуете инструкциям Facebook, вы в основном собираете несколько команд, а затем хешируете результат.Вывод процесса может фактически быть «неверным паролем», который затем вы используете в качестве base64-хэша, и на первый взгляд может показаться действительным хеш-кодом, но это не так.

...