webentwicklung-frage-antwort-db.com.de

Android: Facebook erhält bei erfolgreichem Login "User Access Token"

Ich habe ein Login-Projekt über das neueste SDK von Facebook durchgeführt, d. H. 3.0. Es fällt mir schwer, Benutzerzugriffstoken zu erhalten. Ich habe im Internet gesucht und alle, maximale Ergebnisse wurden mit dem alten SDK verwendet. Hier sind einige Codeteile, die ich aus Facebook Android SDK Tutorial entnommen habe:

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() + "!");
                                }
                            }
                        });
            }
        }
    });

}

}

Der Login war erfolgreich und ich kann den Benutzernamen in der App sehen, wie vom Facbeook-Tutorial vorgeschlagen.

Ich habe alte Methoden ausprobiert, aber alle sind jetzt veraltet. Bitte leiten Sie mich, wenn Sie ein User Access Token erhalten. Hilfe wird geschätzt.

Vielen Dank. 

16
Anupam

Fügen Sie in der Methode onResume () den folgenden Code hinzu (in diesem Fall habe ich Toast.makeText verwendet, um den Token-Zugriff nach der Anmeldung zu sehen):

    Session session = Session.getActiveSession();
    if (session.isOpened()) {
        Toast.makeText(getActivity(), session.getAccessToken(), Toast.LENGTH_LONG).show();
    }

Ich habe getActivity verwendet, weil es sich in meinem Fall in einem Fragment befindet. Wenn Sie Ihren Login-Button in einer Aktivität haben, verwenden Sie "this" statt "getActivity ()"

40

Hinweis: Die Session-Klasse wird in der neuen Facebook-SDK entfernt.

Nach Facebook SDK version 4.X sollten Sie Folgendes verwenden:

AccessToken token = AccessToken.getCurrentAccessToken();
if (token != null) {
    Toast.makeText(getActivity(), token, Toast.LENGTH_LONG).show();
}

Änderungsprotokollreferenz ist hier.

Referenz von Sdk 3.x zu 4.x migrieren

32
abhilvare

Ich bin neu in Android ..
Ich benutze den obigen Code, um nur das Token zu erhalten.

Für Facebook SDK 4.21.0
'com.facebook.Android:facebook-Android-sdk:4.21.0' kompilieren

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());
4
Sujeet Kumar

Um das accessToken für facebook-sdk 4. * oder höher zu erhalten, fügen Sie diese Zeilen nach facebookSDKInitialize () ein.

FacebookSdk.setIsDebugEnabled(true);
FacebookSdk.addLoggingBehavior(LoggingBehavior.INCLUDE_ACCESS_TOKEN);

Verwenden Sie danach diese Codezeilen,

AccessToken token = AccessToken.getCurrentAccessToken();
Log.d("Access Token is",token);

Probe:

 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();
3
Mukul Aggarwal

Code unten wird aktualisiert:

@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());
    }
    /***/
}
0
Marcelo Gumiero