Próbuję zalogować się do Facebooka po kliknięciu przycisku przez użytkownika, a po pomyślnym zalogowaniu nowe działanie zostanie utworzone.Zaloguj się na facebooku przycisk, aby otworzyć nową działalność
To jest kod głównej działalności do tej pory!
import android.app.Activity;
import android.content.Intent;
import android.net.Uri;
import android.os.Bundle;
import android.view.Menu;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.EditText;
import android.widget.ImageButton;
import android.widget.Toast;
import com.facebook.LoggingBehavior;
import com.facebook.Session;
import com.facebook.SessionState;
import com.facebook.Settings;
public class MainActivity extends Activity {
@SuppressWarnings("unused")
private static final String URL_PREFIX_FRIENDS = "https://graph.facebook.com/me/friends?access_token=";
private Session.StatusCallback statusCallback = new SessionStatusCallback();
private ImageButton fbImgButton;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
fbImgButton = (ImageButton)findViewById(R.id.imageView2);
Settings.addLoggingBehavior(LoggingBehavior.INCLUDE_ACCESS_TOKENS);
Session session = Session.getActiveSession();
if(session == null) {
if(savedInstanceState != null) {
session = Session.restoreSession(this, null, statusCallback, savedInstanceState);
}
if(session== null) {
session = new Session(this);
}
Session.setActiveSession(session);
if (session.getState().equals(SessionState.CREATED_TOKEN_LOADED)) {
session.openForRead(new Session.OpenRequest(this).setCallback(statusCallback));
}
}
updateView();
}
@Override
public void onStart() {
super.onStart();
Session.getActiveSession().addCallback(statusCallback);
}
@Override
public void onStop() {
super.onStop();
Session.getActiveSession().removeCallback(statusCallback);
}
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
Session.getActiveSession().onActivityResult(this, requestCode, resultCode, data);
}
@Override
protected void onSaveInstanceState(Bundle outState) {
super.onSaveInstanceState(outState);
Session session = Session.getActiveSession();
Session.saveSession(session, outState);
}
private void updateView() {
Session session = Session.getActiveSession();
if(session.isOpened()) {
Toast.makeText(getApplicationContext(), "Logged in....", Toast.LENGTH_LONG).show();
fbImgButton.setOnClickListener(new OnClickListener() {
public void onClick(View view) { loginfb(); }
});
} else {
fbImgButton.setOnClickListener(new OnClickListener() {
public void onClick(View view) { onClickLogin(); }
});
}
}
public void loginfb() {
//start the new activity here
//Toast.makeText(getApplicationContext(), "Works first", Toast.LENGTH_LONG).show();
Intent intent = new Intent(MainActivity.this, SelectionFragment.class);
MainActivity.this.startActivity(intent);
}
private void onClickLogin() {
Session session = Session.getActiveSession();
if (!session.isOpened() && !session.isClosed()) {
session.openForRead(new Session.OpenRequest(this).setCallback(statusCallback));
} else {
Session.openActiveSession(this, true, statusCallback);
}
Intent intent = new Intent(MainActivity.this, SelectionFragment.class);
MainActivity.this.startActivity(intent);
}
public void shareOnTwitter(View v) {
EditText widget40 = (EditText)findViewById(R.id.widget40);
Uri uri = Uri.parse("https://twitter.com/intent/tweet?text=" + " @coolfacts_fb " + widget40.getText());
Intent intent = new Intent(Intent.ACTION_VIEW, uri);
startActivity(intent);
}
public void nofb(View v) {
Intent intent = new Intent(v.getContext(), shareTw.class);
startActivityForResult(intent, 0);
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.activity_main, menu);
return true;
}
private class SessionStatusCallback implements Session.StatusCallback {
@Override
public void call(Session session, SessionState state, Exception exception) {
updateView();
}
}
}
Problemem jest to, bez względu na to jaki jest obecny stan użytkownika, jeśli idzie do nowej działalności, jak tylko kliknąć na Facebook login!
Czy ktoś może mi pomóc?
Czy to jest tak, że 'sesja' nie jest otwarta, nie można przejść do metody' onClickLogin() '? –
Przechodzi do metody onclicklogin(), ponieważ te linie działają: Intencja intent = new Intent (MainActivity.this, SelectionFragment.class); MainActivity.this.startActivity (zamiar); – defiant
@oDx zakończyłeś proces sprawdzania autentyczności facebook przed rozpoczęciem nowej aktywności? –