kin*_*ori 0 permissions facebook-android-sdk
在之前的android SDK中,我通过调用询问了新的权限,Facebook.authorize()并显示了批准权限屏幕.但是在SDK 3.0中,当我调用时FacebookActivity.openSessionForPublish(),对话框总是显示登录表单.如何显示批准权限屏幕?
我已经设置了具有令牌和到期日期的会话,其SessionState是CREATED_TOKEN_LOADED.
是否要求显示权限对话框或Facebook.authorize()始终显示登录表单?那么请教我正确的方法.
我的代码如下
public class FbConn extends FacebookActivity {
public void onCreate(Bundle savedInstanceState) {
...
if( savedInstanceState == null ) {
Session savedSession = CommonUtil.getFbSession(CustomSessionStore.getFbInfo(getApplicationContext())); //get access token and expiration date from session store and set up new session.
Session.setActiveSession(savedSession);
setSession(savedSession);
}
}
protected void onStart() {
super.onStart();
openSessionForPublish(EpisodeApplication.config.getSelectedServer().fbAppId, Constants.FB_PERMISSIONS);
}
}
Run Code Online (Sandbox Code Playgroud)
更新
我已经注释掉了这些行,并且权限请求屏幕显示成功.但我不确定这是否正确.
在com.facebook.LoginActivity第62行,
Utility.clearFacebookCookies(this);
Run Code Online (Sandbox Code Playgroud)
在com.facebook.Session第1202行,
Utility.clearFacebookCookies(getStaticContext());
Run Code Online (Sandbox Code Playgroud)
如果您已从先前的身份验证流中获得了有效会话,那么如果您要请求新权限,请使用Session.ReauthorizeRequest类.
Session.ReauthorizeRequest reauthRequest = new Session
.ReauthorizeRequest(this, Constants.FB_PERMISSIONS);
session.reauthorizeForPublish(reauthRequest);
Run Code Online (Sandbox Code Playgroud)
这应显示您要求的新权限的权限屏幕,而不是登录表单.
但是,通过查看您的逻辑,您不清楚第一次登录时的处理方式.如果您希望在本课程中处理它,那么我建议使用以下内容:
Session.openActiveSession(this, true);
Run Code Online (Sandbox Code Playgroud)
如果没有缓存令牌,这将打开登录表单.如果有缓存的令牌,它将创建一个新的Session并使其处于活动状态.这将打开具有基本权限的会话(如果用户需要登录),或者根据检索到的缓存标记打开具有权限的会话.然后,您可以调用re-auth方法来请求发布权限.您需要在上下文中执行此操作,并且通常不希望调用auth函数背靠背,即将用户登录,然后立即请求发布权限.
| 归档时间: |
|
| 查看次数: |
6580 次 |
| 最近记录: |