在没有为会话设置 onActivityResult 的情况下从 facebook activity 获取结果
Get result from facebook activity without onActivityResult set for session
我正在使用 android facebook SDK,但我 运行 遇到了问题。
我创建了 2 个 classes,它们是:
public class FacebookSession implements Session.StatusCallback {
public interface SessionCallbacks {
public void onSessionOpened(String token, User user, boolean isNewProfile);
public void onSessionOpenFailed(String errorText);
}
public FacebookSession(Activity activity) {
...
}
@Override
public void call(Session session, SessionState sessionState, Exception e) {
switch (sessionState) {
case CLOSED:
...
// Calling SessionCallbacks callbacks here
break;
case CLOSED_LOGIN_FAILED:
...
// Calling SessionCallbacks callbacks here
break;
case OPENED:
...
// Calling SessionCallbacks callbacks here
break;
case OPENED_TOKEN_UPDATED:
...
// Calling SessionCallbacks callbacks here
break;
}
}
}
在我的 activity 调用 Facebook 会话中:
public class LoginActivity extends FragmentActivity implements
FacebookSession.SessionCallbacks {
public LoginActivity() {
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_login);
...
}
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
Session.getActiveSession().onActivityResult(this, requestCode,
resultCode, data);
}
@Override
public void onSessionOpened(String token, User user, boolean isNewProfile) {
...
}
}
如您所见,如果我想要结果,我必须使用 FacebookSession
class 在每个 activity 的 onActivityResult
方法中调用 Session.getActiveSession().onActivityResult(this, requestCode, resultCode, data);
在 FacebookSession
的 call
回调中返回。如果我不这样做,我的 FacebookSession
就无法工作。我想在这里做的是不必为每个使用 FacebookSession
的活动调用此 Session.getActiveSession().onActivityResult(this, requestCode, resultCode, data);
。有解决方法吗?谢谢
如果您的所有活动都可能使用户登录或请求额外的权限,那么不,实现 onActivityResult 方法没有解决方法。通常情况下,使用 Facebook 登录功能的应用程序只会通过一些有限的活动来登录,所以这不是问题。
您要处理多少活动?如果您绝对认为这是一个问题,那么您可以
创建一个 BaseActivity class,你的所有 Activity 都扩展,并将 onActivityResult 放在父 class 中;或
将您所有的 Facebook 集成移动到一个集中的 activity。
我正在使用 android facebook SDK,但我 运行 遇到了问题。 我创建了 2 个 classes,它们是:
public class FacebookSession implements Session.StatusCallback {
public interface SessionCallbacks {
public void onSessionOpened(String token, User user, boolean isNewProfile);
public void onSessionOpenFailed(String errorText);
}
public FacebookSession(Activity activity) {
...
}
@Override
public void call(Session session, SessionState sessionState, Exception e) {
switch (sessionState) {
case CLOSED:
...
// Calling SessionCallbacks callbacks here
break;
case CLOSED_LOGIN_FAILED:
...
// Calling SessionCallbacks callbacks here
break;
case OPENED:
...
// Calling SessionCallbacks callbacks here
break;
case OPENED_TOKEN_UPDATED:
...
// Calling SessionCallbacks callbacks here
break;
}
}
}
在我的 activity 调用 Facebook 会话中:
public class LoginActivity extends FragmentActivity implements
FacebookSession.SessionCallbacks {
public LoginActivity() {
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_login);
...
}
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
Session.getActiveSession().onActivityResult(this, requestCode,
resultCode, data);
}
@Override
public void onSessionOpened(String token, User user, boolean isNewProfile) {
...
}
}
如您所见,如果我想要结果,我必须使用 FacebookSession
class 在每个 activity 的 onActivityResult
方法中调用 Session.getActiveSession().onActivityResult(this, requestCode, resultCode, data);
在 FacebookSession
的 call
回调中返回。如果我不这样做,我的 FacebookSession
就无法工作。我想在这里做的是不必为每个使用 FacebookSession
的活动调用此 Session.getActiveSession().onActivityResult(this, requestCode, resultCode, data);
。有解决方法吗?谢谢
如果您的所有活动都可能使用户登录或请求额外的权限,那么不,实现 onActivityResult 方法没有解决方法。通常情况下,使用 Facebook 登录功能的应用程序只会通过一些有限的活动来登录,所以这不是问题。
您要处理多少活动?如果您绝对认为这是一个问题,那么您可以
创建一个 BaseActivity class,你的所有 Activity 都扩展,并将 onActivityResult 放在父 class 中;或
将您所有的 Facebook 集成移动到一个集中的 activity。