gpt4 book ai didi

java - 注销后无法使用 Facebook 凭据登录

转载 作者:太空宇宙 更新时间:2023-11-03 11:11:17 24 4
gpt4 key购买 nike

我有一个 Android 应用程序,允许用户使用他们的 Facebook 凭据登录。一旦他们第一次注销,就无法再次登录。从 Applications page in user settings 清除应用程序的权限后在 Facebook 的网站上,登录工作正常。

我使用 LoginButton 登录。

需要能够访问登录信息的 Activity,扩展此 AuthActivity Activity。

public class AuthActivity extends Activity {
private AuthUtils authUtils;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);

authUtils = new AuthUtils(this);
authUtils.onCreate(savedInstanceState);
}

public AuthUtils getAuthUtils() {
return authUtils;
}

@Override
public void onStart() {
super.onStart();
authUtils.onStart();
}

@Override
public void onStop() {
super.onStop();
authUtils.onStop();
}

@Override
public void onResume() {
super.onResume();
authUtils.onResume();
}

@Override
public void onPause() {
super.onPause();
authUtils.onPause();
}

@Override
public void onDestroy() {
super.onDestroy();
authUtils.onDestroy();
}

@Override
public void onSaveInstanceState(Bundle outState) {
super.onSaveInstanceState(outState);
authUtils.onSaveInstanceState(outState);
}

@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
authUtils.onActivityResult(requestCode, resultCode, data);
}
}

AuthUtils 看起来像这样。我删除了所有与 Google+ 登录相关的内容以及与登录过程无关的所有内容,例如使用我的应用程序首选项保存用户信息。

public class AuthUtils implements ConnectionCallbacks, OnConnectionFailedListener {
private final Activity activityContext;
private UiLifecycleHelper facebookUiHelper;

public AuthUtils(Activity context) {
this.activityContext = context;

facebookUiHelper = new UiLifecycleHelper(context, facebookStatusCallback);
}

public void signInFacebook() {
LoginButton facebookLoginButton = new LoginButton(activityContext);
facebookLoginButton.setReadPermissions(Arrays.asList("email"));
facebookLoginButton.performClick();
}

public void signOutFacebook() {
Session facebookSession = Session.getActiveSession();
if(facebookSession != null) {
facebookSession.closeAndClearTokenInformation();
}
}

private StatusCallback facebookStatusCallback = new StatusCallback() {
@Override
public void call(final Session session, SessionState state, Exception exception) {
if(state.isOpened()) {
Request.newMeRequest(session, new GraphUserCallback() {
@Override
public void onCompleted(GraphUser user, Response response) {
String email = "";

if(user.asMap().containsKey("email")) {
email = user.getProperty("email").toString();
} else {
// ... not related to login
}

// Some actions here, not related to login.
}
});
} else if(state.isClosed()) {
// ... not related to login
}
}
};

public void onCreate(Bundle savedInstanceState) {
facebookUiHelper.onCreate(savedInstanceState);
}

public void onResume() {
facebookUiHelper.onResume();
}

public void onPause() {
facebookUiHelper.onPause();
}

public void onDestroy() {
facebookUiHelper.onDestroy();
}

public void onSaveInstanceState(Bundle outState) {
facebookUiHelper.onSaveInstanceState(outState);
}

public void onActivityResult(int requestCode, int resultCode, Intent data) {
facebookUiHelper.onActivityResult(requestCode, resultCode, data);
}
}

最佳答案

即使在运行 Facebook 的示例应用程序时,我也遇到了同样的问题。我通过向 Facebook 提供我的默认签名 key 解决了这个问题:两者都在我的示例应用程序的开发人员设置中,位于 https://developers.facebook.com/settings/developer/sample-app/。然后在 Android 平台的应用程序设置中。

Facebook 建议了一种获取默认 key 的简单方法,可以在 https://developers.facebook.com/docs/android/getting-started 的故障排除下找到该方法.下面提供了运行 Hello Facebook 示例应用程序时执行此操作的代码。

try {
PackageInfo info = getPackageManager().getPackageInfo(
"com.facebook.samples.hellofacebook",
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) {
}

注意:当您发布应用时,您不应使用默认 key ,而是使用您自己的 key 生成和签署应用。

关于java - 注销后无法使用 Facebook 凭据登录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24149499/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com