Android:Facebook成功登录后获得"用户访问令牌"

Anu*_*pam 17 android facebook-android-sdk android-facebook

我一直在通过Facebook最新的SDK即3.0进行一些登录项目.我在获取用户访问令牌方面遇到了困难.我在互联网上搜索了所有,最大的结果是使用了旧的SDK.以下是我从Facebook Android SDK教程中获取的一些代码:

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

}

}
Run Code Online (Sandbox Code Playgroud)

登录成功,我可以在应用程序中看到用户名,如Facbeook教程所示.

我尝试过旧方法,但现在都已弃用.请指导我获取用户访问令牌.帮助将不胜感激.

谢谢.

Eri*_*iaz 40

在onResume()方法中添加以下代码(在本例中我使用Toast.makeText来查看登录后的令牌访问):

    Session session = Session.getActiveSession();
    if (session.isOpened()) {
        Toast.makeText(getActivity(), session.getAccessToken(), Toast.LENGTH_LONG).show();
    }
Run Code Online (Sandbox Code Playgroud)

我使用了getActivity,因为在我的情况下它是在Fragment中,如果你在Activity中有你的登录按钮使用"this"而不是"getActivity()"


ast*_*ter 33

注意:在新的Facebook sdk中删除了会话类

之后Facebook SDK version 4.X,您应该使用以下内容:

AccessToken token = AccessToken.getCurrentAccessToken();
if (token != null) {
    Toast.makeText(getActivity(), token, Toast.LENGTH_LONG).show();
}
Run Code Online (Sandbox Code Playgroud)

更改日志参考在这里.

将参考从Sdk 3.x迁移到4.x.


Suj*_*mar 5

我是Android的新手..
我正在使用以上代码仅获取令牌。

对于Facebook SDK 4.21.0
编译'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());
Run Code Online (Sandbox Code Playgroud)