Android Facebook SDK 3请求将新权限返回到登录侦听器
我正在使用FacebookSDK3forAndroid编写一个Android应用程序 这个SDK的架构是非常错误的,我有一个有线行为 我的流程如下:Android Facebook SDK 3请求将新权限返回到登录侦听器,android,facebook,facebook-graph-api,android-facebook,Android,Facebook,Facebook Graph Api,Android Facebook,我正在使用FacebookSDK3forAndroid编写一个Android应用程序 这个SDK的架构是非常错误的,我有一个有线行为 我的流程如下: 用户以基本权限登录到应用程序 当我需要一些其他权限时,我会检查用户是否已经允许了这些权限,如果没有,我会向他显示Facebook UI对话框,让他给我这些权限 听起来很简单,登录流工作得很好,但每当我尝试允许更多权限时,在用户接受这些权限后,就会调用登录流中的StatucCallback侦听器,而不是我作为Session.getActiveSess
StatucCallback
侦听器,而不是我作为Session.getActiveSession()的参数给出的新回调
这是我的FacebookManager
类中的代码:
/**
* start a logging session to facebook
* @param callback the callback listener
*/
public void startLoginSession(StatusCallback callback)
{
//get the session
Session session = Session.getActiveSession();
//open if needed
if (session == null || session.isClosed() || !session.isOpened())
Session.openActiveSession(mainActivity, true, callback);
else
callback.call(session, session.getState(), null);
}
/**
* Start a new user events session.
* @param callback the callback listener for the session request
*/
public void startUserEventsSession(StatusCallback callback)
{
//get the session
Session session = Session.getActiveSession();
//open if needed
String permission = mainActivity.getResources().getString(R.string.facebook_event_permission);
if (session == null || session.isClosed() || !session.isOpened())
Session.openActiveSession(mainActivity, true, callback);
//if permission is already granted
if (isPermissionGranted(session, permission))
callback.call(session, session.getState(), null);
//ask for new permission
else
{
NewPermissionsRequest request = createPermissionRequest(permission);
request.setCallback(callback);
session.requestNewReadPermissions(request);
}
}
正如您所看到的,他们两个都接收到一个StatusCallback
,我正在向他们每个人传递不同的statuscallback
。。然而,用户第一次允许我的应用程序后的回调与登录相同
顺便说一句,如果已经授予了权限,则在正确的侦听器中调用调用函数
我怀疑它与用户授予新权限后调用的Activity.onActivityResults()
函数有关,但我确实定义了一个新回调,因此…?这是一个不幸的误称,但是StatusCallback应该被称为StatusListener,因为它们遵循侦听器模式而不是回调。因此,只要更新会话,就会调用之前添加到活动会话中的任何回调。有没有办法在添加新的侦听器之前清除侦听器?或者我应该手动构建一个新会话?而且,你在哪里找到了关于它的信息?他们的文档缺少if信息,这是一种轻描淡写的说法…会话类上有一个removeCallback方法。是的,我找到了。谢谢,现在一切都好了。。但是挫折感。。。哦,沮丧。。。