android - handleFacebookAccessToken 对测试用户返回错误
问题描述
此代码适用于所有现实生活中的 Facedbook 测试人员,并且 mAuthNew.getCurrentUser() 返回有效用户。
但是使用 FAcedbook 生成的测试用户,使用 v8.0 创建 - user_friends、email、public_profile 权限,signInWithCredential 总是失败,并显示“提供的身份验证凭据格式错误或已过期..”
Profile profile = Profile.getCurrentProfile() 返回正确的配置文件。isLoggedIn 为真。
我可能遗漏了一些简单的东西,但大脑现在已经混乱了,只是看不到它。
问题是为什么/什么?
private void doFBLogin() {
if (FBuser == null) {
LoginManager.getInstance().registerCallback(mCallBackManager, new FacebookCallback<LoginResult>() {
@Override
public void onSuccess(LoginResult loginResult) {
Profile profile = Profile.getCurrentProfile();
Boolean hasExpired = AccessToken.getCurrentAccessToken().isExpired();
boolean isLoggedIn = AccessToken.getCurrentAccessToken() != null && !AccessToken.getCurrentAccessToken().isExpired();
//True for ALL logins
if (isLoggedIn) {
handleFacebookAccessToken(AccessToken.getCurrentAccessToken());
}
}
@Override
public void onCancel() {
doFBLoginCB(-2, "Cancelled");
}
@Override
public void onError(FacebookException exception) {
doFBLoginCB(-1, exception.getMessage());
}
});
List<String> permissionNeeds = Arrays.asList("public_profile", "email", "user_friends");
LoginManager.getInstance().logInWithReadPermissions(MainActivity.this, permissionNeeds);
} else {
handleFacebookAccessToken(AccessToken.getCurrentAccessToken());
}
}
private void handleFacebookAccessToken(AccessToken token) {
AuthCredential credential = FacebookAuthProvider.getCredential(token.getToken());
mAuthNew.signInWithCredential(credential)
.addOnCompleteListener(this, new OnCompleteListener<AuthResult>() {
@Override
public void onComplete(@NonNull Task<AuthResult> task) {
if (task.isSuccessful()) {
// Sign in success
// Through here ONLY for all real life Facedbook Testers
FBuser = mAuthNew.getCurrentUser();
} else {
if (task.getException().getMessage().contains("invalid access_token")) {
} else if (task.getException().getMessage().contains("The supplied auth credential is malformed or has expired")) {
// Through here for all Facedbook generated Test Users profiles
} else {
doFBLoginCB(-3, "Sign In failed");
}
}
}
});
}
}
解决方案
推荐阅读
- windows - windows slave上的archiveArtifacts失败
- python - Pandas 循环和追加失败
- c# - 无法访问域控制器时的 WCF Windows 身份验证
- ios - 从 Firebase 获取太慢了
- sql - JSON 对到现有 json 列的行
- azure - 我在哪里可以找到有关我的 Azure VM 预留实例是否已正确分配的信息?
- r - ggplot() 不会将文件保存到文件夹
- postgresql - PSQL 将 CSV 数据复制到 postgres 数据库
- dc.js - 当 dc.js 版本更改时,有没有办法更新使用 dc.js 开发的仪表板
- jquery - 如何访问 ViewData 中项目的值?