Facebook android sdk登录对话框
我正在使用Facebook android sdk 3.0。我想要的是用户的id和访问令牌,我得到了完美的。问题是,如果设备上没有安装fb应用程序,并且我尝试登录,它确实会登录,但登录对话框会再次弹出,即使在单击该对话框的关闭按钮之后,该对话框也会一直弹出,直到我再次登录为止 这是我的密码:Facebook android sdk登录对话框,android,facebook-android-sdk,Android,Facebook Android Sdk,我正在使用Facebook android sdk 3.0。我想要的是用户的id和访问令牌,我得到了完美的。问题是,如果设备上没有安装fb应用程序,并且我尝试登录,它确实会登录,但登录对话框会再次弹出,即使在单击该对话框的关闭按钮之后,该对话框也会一直弹出,直到我再次登录为止 这是我的密码: if(v.getId()==imgLike.getId()) { try { /*
if(v.getId()==imgLike.getId())
{
try
{
/*
* Logging in with Facebook
*/
try
{
login_facebook();
}catch(NullPointerException npx)
{
npx.printStackTrace();
}
catch(Exception ex)
{
}
}catch(Exception ex)
{
ex.printStackTrace();
}
}
public void login_facebook()
{
try
{
Session.openActiveSession(acontext, true, new Session.StatusCallback() {
@Override
public void call(final Session session, SessionState state, Exception exception) {
// TODO Auto-generated method stub
if(session.isOpened())
{
List<String> permissions = session.getPermissions();
if (!isSubsetOf(PERMISSIONS, permissions)) {
pendingPublishReauthorization = true;
Session.NewPermissionsRequest newPermissionsRequest = new Session.NewPermissionsRequest(acontext, PERMISSIONS);
session.requestNewPublishPermissions(newPermissionsRequest);
}
Request.executeMeRequestAsync(session, new Request.GraphUserCallback() {
@Override
public void onCompleted(GraphUser user, Response response) {
// TODO Auto-generated method stub
if(user!=null)
{
fbUserid=user.getId();
fbAccessToken=session.getAccessToken();
Log.i("User Name ", "Name : "+user.getName());
Log.i("User Id ", "Id : "+user.getId());
Log.i("User Access Token ", "Access Token : "+session.getAccessToken());
new LikeUrl().execute(carName.get(currentIMage));
}
}
});
}
}
});
}catch(NullPointerException npx)
{
npx.printStackTrace();
}catch(BadTokenException bdx)
{
bdx.printStackTrace();
}
catch(Exception ex)
{
ex.printStackTrace();
}
}
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
try
{
Session.getActiveSession().onActivityResult(this, requestCode, resultCode, data);
}catch(IllegalStateException ilgx)
{
ilgx.printStackTrace();
}
catch (NullPointerException e) {
// TODO: handle exception
e.printStackTrace();
}
catch(Exception ex)
{
ex.printStackTrace();
}
}
private boolean isSubsetOf(Collection<String> subset, Collection<String> superset) {
for (String string : subset) {
if (!superset.contains(string)) {
return false;
}
}
return true;
}
if(v.getId()==imgLike.getId())
{
尝试
{
/*
*使用Facebook登录
*/
尝试
{
登录facebook();
}捕获(NullPointerException npx)
{
npx.printStackTrace();
}
捕获(例外情况除外)
{
}
}捕获(例外情况除外)
{
例如printStackTrace();
}
}
公共无效登录\u facebook()
{
尝试
{
openActiveSession(acontext,true,new Session.StatusCallback()){
@凌驾
公共无效调用(最终会话、会话状态、异常){
//TODO自动生成的方法存根
if(session.isOpened())
{
List permissions=session.getPermissions();
如果(!isSubsetOf(权限、权限)){
pendingPublishReauthorization=真;
Session.newpermissions请求newpermissions请求=新建会话.newpermissions请求(acontext,PERMISSIONS);
session.requestNewPublishPermissions(newPermissionsRequest);
}
Request.executeRequestAsync(会话,新请求.GraphUserCallback(){
@凌驾
未完成公共无效(GraphUser用户,响应){
//TODO自动生成的方法存根
如果(用户!=null)
{
fbUserid=user.getId();
fbAccessToken=session.getAccessToken();
Log.i(“用户名”,“名称:”+User.getName());
Log.i(“用户Id”,“Id:+User.getId());
Log.i(“用户访问令牌”,“访问令牌:+session.getAccessToken());
new LikeUrl().execute(carName.get(currentIMage));
}
}
});
}
}
});
}捕获(NullPointerException npx)
{
npx.printStackTrace();
}捕获(BadTokenException bdx)
{
bdx.printStackTrace();
}
捕获(例外情况除外)
{
例如printStackTrace();
}
}
@凌驾
ActivityResult上的公共void(int请求代码、int结果代码、意图数据){
super.onActivityResult(请求代码、结果代码、数据);
尝试
{
Session.getActiveSession().onActivityResult(此、请求代码、结果代码、数据);
}捕获(非法状态异常ilgx)
{
ilgx.printStackTrace();
}
捕获(NullPointerException e){
//TODO:处理异常
e、 printStackTrace();
}
捕获(例外情况除外)
{
例如printStackTrace();
}
}
私有布尔isSubsetOf(集合子集、集合超集){
for(字符串:子集){
如果(!superset.contains(string)){
返回false;
}
}
返回true;
}
在没有安装Facebook应用程序的情况下使用emulator时,我遇到了同样的问题。
事实上,我认为第一个对话框登录需要基本权限(即公共配置文件和朋友列表),而第二个对话框登录需要附加权限(在您的情况下是读取权限)
当我安装官方Facebook应用程序时,两个对话框完全按照这个假设发生了变化
如果您希望在此处使用单个对话框或单个权限请求,您可以找到一个有用的讨论:Hey@5agado我尝试使用UILifeCycleHelper实现FB登录流,在某些情况下,
数据
参数通常会有一个包含FB响应的字段mMap
,该字段为空。为什么会发生这种情况?