J'ai participé à un projet de connexion via le dernier SDK de Facebook, à savoir 3.0. J'obtiens un moment difficile pour obtenir un jeton d'accès utilisateur. J'ai cherché sur Internet et tous, les résultats maximum utilisaient l'ancien SDK. Voici quelques extraits de code que j'ai extraits de Facebook Android SDK Tutorial :
public class LoginActivity extends Activity implements OnClickListener {
Button login;
TextView accessToken;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_login);
login = (Button) findViewById(R.id.login);
accessToken = (TextView) findViewById(R.id.accessToken);
login.setOnClickListener(this);
}
@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 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() + "!");
}
}
});
}
}
});
}
}
La connexion a réussi et je peux voir le nom d'utilisateur dans l'application, comme suggéré par le tutoriel Facbeook.
J'ai essayé d'anciennes méthodes, mais celles-ci sont maintenant obsolètes. Veuillez me guider pour obtenir un jeton d’accès utilisateur. L'aide sera appréciée.
Merci.
Dans la méthode onResume (), ajoutez le code suivant (dans ce cas, j'ai utilisé Toast.makeText pour voir l'accès au jeton après la connexion):
Session session = Session.getActiveSession();
if (session.isOpened()) {
Toast.makeText(getActivity(), session.getAccessToken(), Toast.LENGTH_LONG).show();
}
J'ai utilisé getActivity parce que c'est dans un fragment dans mon cas, si vous avez votre bouton de connexion dans une activité, utilisez "this" au lieu de "getActivity ()"
Remarque: la classe de session est supprimée dans le nouveau sdk de Facebook
Après Facebook SDK version 4.X
, vous devriez utiliser ce qui suit:
AccessToken token = AccessToken.getCurrentAccessToken();
if (token != null) {
Toast.makeText(getActivity(), token, Toast.LENGTH_LONG).show();
}
Je suis nouveau dans Android ..
J'utilise le code ci-dessus uniquement pour obtenir le jeton.
Pour Facebook SDK 4.21.0
compiler 'com.facebook.Android:facebook-Android-sdk:4.21.0'
FacebookSdk.setIsDebugEnabled(true);
FacebookSdk.addLoggingBehavior(LoggingBehavior.INCLUDE_ACCESS_TOKENS);
AccessToken token = AccessToken.getCurrentAccessToken();
Log.d("access only Token is", String.valueOf(token.getToken()));
String facebook_id_token = String.valueOf(token.getToken());
Pour obtenir le accessToken pour facebook-sdk 4. * ou supérieur . Ajoutez ces lignes après facebookSDKInitialize ()
FacebookSdk.setIsDebugEnabled(true);
FacebookSdk.addLoggingBehavior(LoggingBehavior.INCLUDE_ACCESS_TOKEN);
Après cela, utilisez ces lignes de codes,
AccessToken token = AccessToken.getCurrentAccessToken();
Log.d("Access Token is",token);
Échantillon:
GraphRequestAsyncTask graphRequestAsyncTask = new GraphRequest(
login_result.getAccessToken(),
//AccessToken.getCurrentAccessToken(),
"/me/friends",
bundle,
HttpMethod.GET,
new GraphRequest.Callback() {
public void onCompleted(GraphResponse response) {
try {
JSONArray rawName = response.getJSONObject().getJSONArray("data");
Log.d("rawName friendList",String.valueOf(rawName));
AccessToken token = AccessToken.getCurrentAccessToken();
Log.d("access token is: ",String.valueOf(token));
} catch (JSONException e) {
e.printStackTrace();
}
}
}
).executeAsync();
Le code ci-dessous est mis à jour:
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
callbackManager.onActivityResult(requestCode, resultCode, data);
/** This block obtains Facebook UserID and Token */
AccessToken token = AccessToken.getCurrentAccessToken();
if (token != null) {
Toast.makeText(this, token.toString(), Toast.LENGTH_SHORT).show();
Log.e(TAG, "Token: " + token.getToken());
Log.e(TAG, "UserID: " + token.getUserId());
}
/***/
}