代码:
public void onClick(View v) {
if(fb.isSessionValid())
{
Log.i("Checking isSessionValid()","Inside isSessionValid()");
try {
fb.logout(getApplicationContext());
updatebuttonimage();
} catch (MalformedURLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
else
{
Log.i("","Jumped isSessionValid");
fb.authorize(MainActivity.this,new String[]{"email"},new DialogListener() {
public void onFacebookError(FacebookError e) {
Toast.makeText(MainActivity.this,"FacebookError",Toast.LENGTH_SHORT).show();
}
.....
当我试图检查isSessionValid()时,它总是返回false并且它不会进入方法。我也尝试在onCreate()中添加以下代码但是它在我的logcat中打印了相同的KeyHash所以没有使用:
try {
PackageInfo info = getPackageManager().getPackageInfo(
"com.example.facebook_integration",
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) {
}
帮助将非常感谢伙计们。提前谢谢。
答案 0 :(得分:1)
我发现密钥哈希是问题,重新生成它再次解决了我的问题。
注意: KeyHash对于每个模拟器或设备是独立的,我相信因为我最初为我的模拟器生成了KeyHash,后来开始在实时设备上工作,所以我不得不再次生成哈希密钥以使其工作。 isSessionValid()仅在为当前运行的android设备生成另一个KeyHash后返回true(不确定这是否真的导致了问题)。但是可以尝试一下它的价值。希望这很有用。