到目前为止我所做的..
<meta-data
android:name="com.facebook.sdk.ApplicationId"
tools:replace="android:value"
android:value="@string/facebook_app_id" />
<activity
android:name="com.facebook.FacebookActivity"
android:configChanges="keyboard|keyboardHidden|screenLayout|screenSize|orientation"
android:label="@string/app_name" />
<activity
android:name="com.facebook.CustomTabActivity"
android:exported="true">
<intent-filter>
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
<category android:name="android.intent.category.BROWSABLE" />
<data android:scheme="@string/fb_login_protocol_scheme" />
</intent-filter>
</activity>
创建代码
loginButton = findViewById(R.id.login_button_fb);
callbackManager = CallbackManager.Factory.create();
findViewById(R.id.login_button).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
signInWithFacebook();
}
});
getInstance().registerCallback(callbackManager,
new FacebookCallback<LoginResult>() {
@Override
public void onSuccess(LoginResult loginResult) {
Constants.showProcessDialogCustomText(context, "Logging in...");
RequestFacebookData();
}
@Override
public void onCancel() {
}
@Override
public void onError(FacebookException exception) {
ClipboardManager clipboard = (ClipboardManager) context.getSystemService(Context.CLIPBOARD_SERVICE);
ClipData clip = ClipData.newPlainText("error", exception.toString());
clipboard.setPrimaryClip(clip);
Toast.makeText(context, "Error while logging with Facebook", Toast.LENGTH_SHORT).show();
}
});
private void signInWithFacebook() {
loginButton.setReadPermissions("email", "public_profile");
loginButton.performClick();
}
这是代码部分。
我已从“ https://developers.facebook.com/apps/appId/settings/basic/ ”将我的应用设置为公开
通过使用 cmd 也从代码生成给定哈希键
keytool -exportcert -alias androiddebugkey -keystore "C:\Users\USERNAME\.android\debug.keystore" | "C:\Users\SHAKI\Downloads\openssl-0.9.8k_WIN32\bin\openssl" sha1 -binary | "C:\Users\SHAKI\Downloads\openssl-0.9.8k_WIN32\bin\openssl" base64
代码
try {
PackageInfo info = getPackageManager().getPackageInfo(
"com.happihub.bd",
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) {
} catch (NoSuchAlgorithmException e) {
}
使用 cmd 为签名的 apk 生成哈希密钥
keytool -exportcert -alias happihub -keystore E:\File\Android\FOZ_Files\relese.jks | "C:\Users\SHAKI\Downloads\openssl-0.9.8k_WIN32\bin\openssl" sha1 -binary | "C:\Users\SHAKI\Downloads\openssl-0.9.8k_WIN32\bin\openssl" base64
请注意,我只能使用我的 Facebook 帐户(与应用程序链接)登录。其他人得到错误。最有趣的是,我在调试模式下尝试使用我的手机使用其他帐户,该帐户也可以登录..但是当我使用发布 apk 时,我和其他帐户没有得到“SERVER_ERROR:[code] 1675030 [message]:执行查询时出错. [extra]: null",直接表示hashkey不匹配的activity。看截图

解决了
我所要做的就是尝试从 linux 机器上获取散列密钥。:)