我正在尝试在我的应用程序中获取facebook登录进行身份验证但是问题是当我尝试在注销内部注销时它无法正常工作,任何人都可以帮助我。代码如下:
public class Facebooklogin extends Activity implements OnClickListener
{
ImageView ivFacebook,btnLogout;
Facebook fb;
public static final String MyPREFERENCES = "MyPrefs" ;
String APP_ID;
private SharedPreferences sp;
@SuppressWarnings("deprecation")
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.loginscreen);
sp=getPreferences(Context.MODE_PRIVATE);
String access_token=sp.getString("access_token", null);
long expires=sp.getLong("access_expires", 0);
if(access_token !=null)
{
fb.setAccessToken(access_token);
}
if(expires !=0)
{
fb.setAccessExpires(expires);
}
APP_ID=getString(R.string.facebook_app_id);
fb=new Facebook(APP_ID);
ivFacebook=(ImageView)findViewById(R.id.ivFacebook);
ivFacebook.setOnClickListener(this);
}
@SuppressWarnings("deprecation")
private void updateButton()
{
// TODO Auto-generated method stub
Intent i = new Intent(Facebooklogin.this,MainAct.class);
startActivity(i);
}
@SuppressWarnings("deprecation")
public void onClick(View v)
{
// TODO Auto-generated method stub
if(fb.session != null && fb.session.isOpened())
{
try {
// fb.logout(getApplicationContext());
updateButton();
} catch (Exception e)
{
// TODO Auto-generated catch block
e.printStackTrace();
}
}
else {
fb.authorize(Facebooklogin.this, new String[] {"email"},new DialogListener()
{
@Override
public void onFacebookError(FacebookError e)
{
// TODO Auto-generated method stub
}
@Override
public void onError(DialogError e)
{
// TODO Auto-generated method stub
}
@Override
public void onComplete(Bundle values)
{
// TODO Auto-generated method stub
Editor editor=sp.edit();
editor.putString("access_token", fb.getAccessToken());
editor.putLong("access_expires", fb.getAccessExpires());
editor.commit();
updateButton();
}
@Override
public void onCancel() {
// TODO Auto-generated method stub
}
});
}
}
@SuppressWarnings("deprecation")
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
// TODO Auto-generated method stub
super.onActivityResult(requestCode, resultCode, data);
fb.authorizeCallback(requestCode, resultCode, data);
}
答案 0 :(得分:0)
我在这里看不到任何注销行,您可以清除会话以执行注销。
if (session != null){
session.closeAndClearTokenInformation();
session = null;
}
同时从共享首选项中删除令牌,并注意您在这里使用旧版本的facebook api。以上方法现已弃用。