android的Facebook登录
我正在尝试打开一个facebook图库,如果我登录了facebook,否则我要求使用facebook sdk在android中登录facebook,我编写了以下代码:android的Facebook登录,android,facebook,facebook-graph-api,Android,Facebook,Facebook Graph Api,我正在尝试打开一个facebook图库,如果我登录了facebook,否则我要求使用facebook sdk在android中登录facebook,我编写了以下代码: Session.openActiveSession(FbGallery.this, true, new Session.StatusCallback() { @SuppressWarnings("deprecation") @Override public void call(final Session s
Session.openActiveSession(FbGallery.this, true, new Session.StatusCallback() {
@SuppressWarnings("deprecation")
@Override
public void call(final Session session, SessionState state, Exception exception) {
System.out.println("Session:::"+session.toString());
if(session.isOpened()){
session.requestNewPublishPermissions(
new Session.NewPermissionsRequest(FbGallery.this, "user_photos"));
Request.executeMeRequestAsync(session, new Request.GraphUserCallback() {
@Override
public void onCompleted(GraphUser user, Response response) {
Toast.makeText(getApplicationContext(), "Session is opened", Toast.LENGTH_SHORT).show();
}
});
}
else{
Toast.makeText(getApplicationContext(), "Gone to else", Toast.LENGTH_SHORT).show();
}
}
});
它工作得很好,如果没有登录,它会进入登录页面,但是如果已经登录,它会递归地运行代码,例如,这里的toast消息“Session is opened”
原因是什么。我不明白..私人void onClickRequest()
if (session.isOpened())
{
Toast.makeText(getApplicationContext(), "Already Login",500).show();
onClickRequest();
}
else
{
onClickRequest();
session = createSession();
}
{
Session Session=Session.getActiveSession();Session.closeAndClearTokenInformation();MainActivity.this.Session.closeAndClearTokenInformation();android.webkit.CookieManager.getInstance().removeAllCookie();谢谢..我更改了你的一些代码,它起作用了…:)有一件事要说。你的代码和我的代码几乎一样..我的代码不起作用吗???
if (this.session.isOpened() && session!=null)
{
shareDialog=new ProgressDialog(MainActivity.this);
shareDialog.setTitle("Post ON Wall");
shareDialog.setMessage("Wait..........");
shareDialog.setCancelable(false);
System.out.println("Already Logged In");
if (session.isOpened()) {
// 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) {
System.out.println(user.getId()+user.getName()+"........................");
id=user.getId();
Toast.makeText(getApplicationContext(), session.getAccessToken(), 100).show();
}
}
});
}
//postPhoto();
} else {
StatusCallback callback = new StatusCallback() {
public void call(Session session, SessionState state,
Exception exception) {
if (exception != null) {
new AlertDialog.Builder(MainActivity.this)
.setTitle("Failed Login")
.setMessage(exception.getMessage())
.setPositiveButton("Ok", null)
.show();
MainActivity.this.session = createSession();
}
}
};
pendingRequest = true;
MainActivity.this.session = createSession();
this.session.openForRead(new Session.OpenRequest(this)
.setCallback(callback).setLoginBehavior(SessionLoginBehavior.SUPPRESS_SSO).setPermissions(""));
}