Facebook登录无法使用Parse Android SDK

时间:2014-09-23 13:44:04

标签: android facebook parse-platform facebook-login

我尝试了许多基于Parse SDK实现Facebook登录的解决方案但没有成功。 好像我错过了什么。

生成Facebook哈希

我尝试使用此命令(以及许多其他命令)和password = android:

生成哈希
  
    

keytool -exportcert -alias androiddebugkey -keystore C:\ Users \ Ido \ .android \ debug.keystore | openssl sha1 -binary | openssl base64

  

但它对我没有用,每次我尝试登录时都会收到一个错误,即哈希密钥未经授权。 将此代码放入Appliction OnCreate为我工作(我没有得到错误):

try {
        PackageInfo info =     getPackageManager().getPackageInfo("com.idob.soccertimer",     PackageManager.GET_SIGNATURES);
        for (Signature signature : info.signatures) {
            MessageDigest md = MessageDigest.getInstance("SHA");
            md.update(signature.toByteArray());
            String sign= Base64.encodeToString(md.digest(), Base64.DEFAULT);
            Log.e("MY KEY HASH:", sign);
            Toast.makeText(getApplicationContext(), sign, Toast.LENGTH_LONG).show();
        }
    } catch (PackageManager.NameNotFoundException e) {
    } catch (NoSuchAlgorithmException e) {
    }

应用程序实现

我为Facebook和Parse做了调整:

在应用程序的onCreate中初始化:

  

ParseFacebookUtils.initialize(的getString(R.string.facebook_app_id));

覆盖loginFragment中的onActivityResult方法:

public void onActivityResult(int requestCode, int resultCode, Intent data) {
    super.onActivityResult(requestCode, resultCode, data);
    ParseFacebookUtils.finishAuthentication(requestCode, resultCode, data);
}

添加元标记:

<meta-data
        android:name="com.facebook.sdk.ApplicationId"
        android:value="@string/facebook_app_id"/>

我使用此代码登录:

ParseFacebookUtils.logIn(getActivity(), new LogInCallback() {
                @Override
                public void done(ParseUser user, ParseException err) {
                    if (user != null) {
                        Log.e("MyApp", err.getMessage());
                    }
                    if (user == null) {
                        Log.d("MyApp", "Uh oh. The user cancelled the Facebook login.");
                    } else if (user.isNew()) {
                        Log.d("MyApp", "User signed up and logged in through Facebook!");
                    } else {
                        Log.d("MyApp", "User logged in through Facebook!");
                    }
                }
            });

我的问题是LogInCallback没有调用,当我尝试登录两次时 - 返回一个LogInCallback,其中user = null且err = null 根本没有调用OnActivityResult。

2 个答案:

答案 0 :(得分:0)

这条路对我来说不对:

C:\Users\Ido. android\debug.keystore

我是Linux用户,无法100%确定Windows路径,但我很确定它应该位于:

C:\Documents and Settings\[User Name]\.android\debug.keystore

C:\Users\[User Name]\.android\debug.keystore

答案 1 :(得分:0)

片段onActivityResult不会自动调用,它应该由活动的onActivityResult调用