gpt4 book ai didi

java - Facebook 在重新安装后登录时给出无效 token Facebook 异常

转载 作者:行者123 更新时间:2023-11-29 09:00:47 25 4
gpt4 key购买 nike

我正在尝试使用最新的 FB SDK 登录 FB。

这是我的代码

Session currentSession = Session.getActiveSession();
if (currentSession == null || currentSession.getState().isClosed()) {
Session session = new Session.Builder(v.getContext())
.setApplicationId(getResources().getString(R.string.app_Id))
.build();
Session.setActiveSession(session);
currentSession = session;
}
if (!currentSession.isOpened()) {
Session.OpenRequest openRequest = null;
openRequest = new Session.OpenRequest(FBLogin.this);
if (openRequest != null) {
openRequest.setDefaultAudience(SessionDefaultAudience.EVERYONE);
openRequest.setPermissions(PERMISSIONS);
openRequest.setLoginBehavior(SessionLoginBehavior.SSO_WITH_FALLBACK);
currentSession.addCallback(callback);
currentSession.openForRead(openRequest);
}
}

@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
if (resultCode == Constants.RESULT_OK) {
finish();
} else Session.getActiveSession().onActivityResult(this, requestCode,
resultCode, data);
}

private Session.StatusCallback callback = new Session.StatusCallback() {

public void call(Session session, SessionState state,
Exception exception) {
onSessionStateChange(session, state, exception);
}
};

private void onSessionStateChange(Session session, SessionState state,
Exception exception) {
if (state.isOpened()) {
registerWithServer(session);
} else if (state.isClosed()) {
mDialog.dismiss();
Utilities
.displayAlert(
"Oops!",
"Could not connect to Facebook. Try removing application"
+ "from App dashboard", FBLogin.this);
}
}

代码在您第一次尝试运行时运行良好。但如果应用程序被卸载或重新安装,然后您尝试登录,它会打开 FB 页面,请求权限,然后给出 FacebookException, token 无效。

我修复它的唯一方法是“尝试从应用程序仪表板中删除应用程序”

这是怎么回事? FB 代币如何运作?在重新授权时,它应该创建一个新 token 而不是失败吗?

最佳答案

          Try this code for facebook login

Session.openActiveSession(this, true, new Session.StatusCallback() {

// callback when session changes state
@Override
public void call(final Session session, SessionState state, Exception exception) {

if (session.isOpened()) {
if(!session.getPermissions().contains("email"))
{
session.requestNewReadPermissions(new Session.NewPermissionsRequest(Facebookpersil.this, PERMISSIONS));
}

// make request to the /me API
Request.executeMeRequestAsync(session, new Request.GraphUserCallback() {

// callback after Graph API response with user object
@Override
public void onCompleted(GraphUser user, Response response) {
if (user != null) {

try
{

Log.w("",""+user.asMap());
name= user.getName();
// location=user.getLocation().getCity();
nickname=user.asMap().get("username").toString();
email=user.asMap().get("email").toString();
String id=user.getId();
URL img_value = null;
try {
img_value = new URL("http://graph.facebook.com/"+id+"/picture?type=small");
} catch (MalformedURLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
fbprofileimage=img_value.toString();
session.close();
if(email.length()==0)
{
Toast("Unexpected error. Please try again");
finish();
}
else{
new Loginauth().execute();
}
}
catch(Exception e)
{
Log.w("error", e.toString());
}
}
}
});
}
}
});




@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
Session.getActiveSession().onActivityResult(this, requestCode, resultCode, data);
}

关于java - Facebook 在重新安装后登录时给出无效 token Facebook 异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17648657/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com