Używam restfb API, aby uzyskać dostęp do zdjęć mojego przyjaciela w Javie. Aby uzyskać dostęp do tych zdjęć, generuję kod dostępu ręcznie przy użyciu adresu Graph API explorer i przekazuję go jako parametr do wywołania funkcji API restfb.Jak zdobyć token dostępu do Facebooka w Androidzie?
Ale teraz chcę wygenerować token dostępu za pomocą kodu (programowo). Widziałem próbki androidów fb, szczególnie hackbook. Nie widzę generowanego kodu dostępu, który można wykorzystać do mojej własnej aplikacji. Czy muszę utworzyć nową aplikację i uzyskać jakieś tajne itp.? Wszelkie sugestie zostaną docenione.
Widziałem te rozwiązania (solution-1 & solution-2) na stackoverflow, ale nadal nie jestem, gdzie zacząć?
Update-1 ::
używam następujący kod, aby zalogować się i coraz token dostępu dla zalogowanego użytkownika. Problem polega jednak na tym, że działa on tylko na koncie, na którym utworzyłem aplikację na Facebooku, aby wygenerować identyfikator app_id. Nie można odebrać połączenia z innych kont. Wszelkie sugestie proszę.
I na wszelki wypadek, jeśli nie wiesz od czego zacząć, wykonaj step-6, aby utworzyć nową aplikację od zera.
public class MainActivity extends Activity implements OnClickListener {
Button login;
TextView accessToken;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
login = (Button) findViewById(R.id.login);
accessToken = (TextView) findViewById(R.id.accessToken);
login.setOnClickListener(this);
// start Facebook Login
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main, menu);
return true;
}
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
Session.getActiveSession().onActivityResult(this, requestCode, resultCode, data);
}
@Override
public void onResume()
{
Session session = Session.getActiveSession();
if(session != null)
if (session.isOpened()) {
//Toast.makeText(this, session.getAccessToken(), Toast.LENGTH_LONG).show();
accessToken = (TextView) findViewById(R.id.accessToken);
accessToken.setText(session.getAccessToken());
System.out.println("----------------------" + session.getAccessToken() + "---------------------");
}
super.onResume();
}
@Override
public void onClick(View v) {
// start Facebook Login
Session.openActiveSession(this, true, new Session.StatusCallback() {
// callback when session changes state
@Override
public void call(Session session, SessionState state,
Exception exception) {
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) {
TextView welcome = (TextView) findViewById(R.id.welcome);
welcome.setText("Hello "
+ user.getName() + "!");
}
}
});
}
}
});
}
}
dziękuję za odpowiedź, nie wolno mi utworzyć obiekt Session. Daj mi znać, dlaczego tak się dzieje! – TharakaNirmana
W rzeczywistości nie trzeba tworzyć nowej instancji sesji, wystarczy użyć metody 'getActiveSession()' lub 'openActiveSession()' w przypadku, gdy otrzymasz sesję zerową z poprzedniej. W związku z tym zobacz także [moja druga odpowiedź] (http://stackoverflow.com/questions/16140771/login-with-facebook-android-sdk-3-0-using-shared-preferences-session/16143102#16143102) – 5agado
Dziękuję za odpowiedź, moja sytuacja jest trochę dziwna. Mam obiekt na Facebooku (Facebook facebook = new Facebook()). Ale z tym obiektem nie mogę wywołać facebook.getActiveSession() ani facebook.openActiveSession(). Czy możesz mi powiedzieć dlaczego? Moim zamiarem jest jakoś stworzyć token dostępu i wysłać go z parametrami (w pakiecie), aby załadować zdjęcie. – TharakaNirmana