要生成我的发布密钥哈希,我做
keytool -exportcert -alias <RELEASE_KEY_ALIAS> -keystore <RELEASE_KEY_PATH> | openssl sha1 -binary | openssl base64
我当然使用我的实际版本密钥别名和实际版本密钥路径。然后我进入Facebook并在设置中的Key Hashes
下添加它。但是我的发布版本没有使用它。我的调试版本与调试密钥一起工作正常。任何想法有什么不对?
在什么情况下我的应用可以在调试模式下将照片发布到Facebook但不能在发布模式下发布?我正在使用简单的电话
Request request = Request.newUploadPhotoRequest(Session.getActiveSession(), photo, new Request.Callback() {
@Override
public void onCompleted(Response response) {
Log.i(TAG, response.toString());
}
});
同样,当我使用调试密钥和构建时,它工作正常。问题可能是Proguard吗?我使用以下行
-keep class com.facebook.** { *; }
-keepattributes Signature
答案 0 :(得分:2)
要确保您的keyhash正确,您可以使用以下代码进行验证
// Add code to print out the key hash
try {
PackageInfo info = getPackageManager().getPackageInfo(
"yourpackagename",
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) {
}
进口
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
import android.content.pm.PackageInfo;
import android.content.pm.PackageManager;
import android.content.pm.PackageManager.NameNotFoundException;
import android.content.pm.Signature;