且构网

分享程序员开发的那些事...
且构网 - 分享程序员编程开发的那些事

登录Facebook应用程序并授权我的应用程序后,如何正确获取访问令牌和其他信息? [Android]产品

更新时间:2022-12-22 12:19:50

毕业:


compile 'com.facebook.android:facebook-android-sdk:[4,5)'


strings.xml

strings.xml


<string name="facebook_app_id">YOUR_APP_ID</string>


AndroidManifest.xml
添加应用程序标签:

AndroidManifest.xml Add inside of 'application' tag:

 <meta-data
        android:name="com.facebook.sdk.ApplicationId"
        android:value="@string/facebook_app_id" />

将此创建为初始化FacebookSDK:

Create this to init FacebookSDK:

public class MainApp extends Application {

    @Override
    public void onCreate() {
        super.onCreate();
        FacebookSdk.sdkInitialize(getApplicationContext());
    }
}

将其添加到AndroidManifest.xml到应用程序标签作为名称:

Add it to AndroidManifest.xml to 'application' tag as the name:

<application
    android:name=".MainApp"

在您的活动布局中,添加Facebook登录按钮:

In your activity layout add Facebook Login Button:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context="com.example.app.FacebookLoginActivity">

 <com.facebook.login.widget.LoginButton
        android:id="@+id/login_button"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_centerVertical="true"
        android:layout_centerHorizontal="true"
        android:layout_marginTop="30dp"
        android:layout_marginBottom="30dp" />

</RelativeLayout>

您的FacebookLoginActivity:您可以在这里获得您的Facebook令牌。

Your FacebookLoginActivity: And Here you can get now your Facebook Token.

public class FacebookLoginActivity extends AppCompatActivity{

private CallbackManager callbackManager;
private LoginButton loginButton;
private String FB_TOKEN;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_signin);
    callbackManager = CallbackManager.Factory.create();
    loginButton = (LoginButton) findViewById(R.id.login_button);
    loginButton.setReadPermissions("public_profile", "user_friends", "email", "user_birthday");
    loginButton.registerCallback(callbackManager, new FacebookCallback<LoginResult>() {
        @Override
        public void onSuccess(LoginResult loginResult) {

            /**
             * HERE YOU CAN GET YOUR FACEBOOK TOKEN!!!!
             **/
            FB_TOKEN=loginResult.getAccessToken().getToken();
        }

        @Override
        public void onCancel() {
        }

        @Override
        public void onError(FacebookException exception) {
        }
    });
}

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    super.onActivityResult(requestCode, resultCode, data);
    callbackManager.onActivityResult(requestCode, resultCode, data);
}

}

如果您需要使用自定义Facebook按钮:

If you need to use Custom Facebook Button:

public class FacebookLoginActivity extends AppCompatActivity{

private CallbackManager callbackManager;
private Button loginButton;
private String FB_TOKEN;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_signin);
    callbackManager = CallbackManager.Factory.create();
    loginButton = (Button) findViewById(R.id.login_button);
    LoginManager.getInstance().registerCallback(callbackManager,
            new FacebookCallback<LoginResult>() {
                @Override
                public void onSuccess(LoginResult loginResult) {
                    /**
                    * HERE YOU CAN GET YOUR FACEBOOK TOKEN!!!!
                    **/
                    FB_TOKEN=loginResult.getAccessToken().getToken();
                }

                @Override
                public void onCancel() {
                }

                @Override
                public void onError(FacebookException exception) {
                    Log.e("onError", exception.getMessage());
                }
            });
    loginButton.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                LoginManager.getInstance().logInWithReadPermissions(FacebookLoginActivity.this, Arrays.asList("public_profile", "user_friends", "email"));
            }
    });
}

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    super.onActivityResult(requestCode, resultCode, data);
    callbackManager.onActivityResult(requestCode, resultCode, data);
}

}