有没有办法将 2FA 添加到 Facebook 的 Oauth2 流程中?为在其 FB 商务管理器帐户上启用 2FA 的用户尝试访问图形 API 的见解端点时,将返回以下错误:
"error": {
"fbtrace_id": "HrY8K9KfT4U",
"error_user_msg": "Unknown error",
"message": "Two factor authentication required. User have to enter a code from SMS or TOTP code generator to pass 2fac. This could happen when accessing a 2fac-protected asset like a page that is owned by a 2fac-protected business manager.",
"error_subcode": 1404120,
"type": "OAuthException",
"error_user_title": "Ask user to pass two factor authentication",
"is_transient": false,
"code": 415
}
Run Code Online (Sandbox Code Playgroud) facebook facebook-graph-api facebook-authentication facebook-access-token facebook-authorization
我正在尝试将新的Facebook SDK 3.0应用到我的Android应用程序中,但我遇到了一个问题.我遇到的问题是,用户被要求再次登录给发布("post_to_wall")的权限,即使用户已经登录,具有读取权限.仅当用户未安装FB应用程序时才会发生这种情况.如果他安装了FB应用程序,则只要求他授予权限.
这是我实现登录的方式:
public void login(Activity activity) {
Session session = Session.getActiveSession();
if (session == null || !session.isOpened()) {
openActiveSession(activity, true, sessionStatusCallback);
}
}
private Session openActiveSession(final Activity activity, final boolean allowLoginUI, final StatusCallback callback) {
return openActiveSession(activity, allowLoginUI, new OpenRequest(activity).setCallback(callback));
}
private Session openActiveSession(final Context context, final boolean allowLoginUI, final OpenRequest openRequest) {
Session session = new Builder(context).setApplicationId(FACEBOOK_APPLICATION_ID).build();
if (SessionState.CREATED_TOKEN_LOADED.equals(session.getState()) || allowLoginUI) {
Session.setActiveSession(session);
session.openForRead(openRequest);
return session;
}
return null;
}
Run Code Online (Sandbox Code Playgroud)
这是回调的调用方法:
public void call(final Session session, final …Run Code Online (Sandbox Code Playgroud) 我正在使用Facebook Android sdk3.0.用户通过Facebook成功登录后,我想做点什么.我应该在里面实现它onActivityResult还是onComplete功能Session.StatusCallback?
实际上这两者有什么区别吗?我可以假设Session.StatusCallback onComplete总是被调用onActivityResult吗?
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
Session.getActiveSession().onActivityResult(this, requestCode, resultCode, data);
// Do Something Here?
}
private class SessionStatusCallback implements Session.StatusCallback {
@Override
public void call(Session session, SessionState state, Exception exception) {
if (session.isOpened()) {
// Or Do Something Here?
}
}
}
Run Code Online (Sandbox Code Playgroud) android facebook facebook-android-sdk facebook-authorization