1.首先你要打开 Android Studio 创建一个新的工程
出来后就是这样的,如下图
2.然后我们要添加 FaceBook 的一些依赖,主要是 Gradle Scripts -- build.gradle(Module: app) 的 dependencies
中加入complie 的包体
加入以下两个
compile 'com.android.support:appcompat-v7:24.0.0' compile 'com.facebook.android:facebook-android-sdk:4.+'
加入后,我们要点一下同步工程 具体就是这个按钮
经过几分钟的等待我们就看到最下端的栏就 finish 了,就编译通过了
3.然后我们要修改 AndroidManifest.xml 添加 联网许可 及 FackBook 的 依赖activity ,还有所需<meta-data>
<uses-permission android:name="android.permission.INTERNET"/> <meta-data android:name="com.facebook.sdk.ApplicationId" android:value="@string/facebook_app_id"/> <activity android:name="com.facebook.FacebookActivity" android:configChanges= "keyboard|keyboardHidden|screenLayout|screenSize|orientation" android:theme="@android:style/Theme.Translucent.NoTitleBar" android:label="@string/app_name" > </activity>
如下图这样添加即可
4.接下来我要们修改 res/values/strings.xml 中添加我们上面用到的
“facebook_app_id”
如下图
![]()
这个里面的id是一串数字,就是你在 Facebook developer里面申请的应用的 ID
5.接下来就要编辑我们的主要的 MainActivity 了
package testfb.com.facebook; import android.content.Intent; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.util.Log; import android.widget.TextView; import java.util.Arrays; import com.facebook.AccessToken; import com.facebook.CallbackManager; import com.facebook.FacebookCallback; import com.facebook.FacebookException; import com.facebook.FacebookSdk; import com.facebook.GraphRequest; import com.facebook.GraphResponse; import com.facebook.HttpMethod; import com.facebook.login.LoginManager; import com.facebook.login.LoginResult; import com.facebook.login.widget.LoginButton; public class MainActivity extends AppCompatActivity { CallbackManager callbackManager; private LoginManager loginManager; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); //这里要初始化FB FacebookSdk.sdkInitialize(getApplicationContext()); //设置窗口 setContentView(R.layout.activity_main); callbackManager = CallbackManager.Factory.create(); this.loginManager = LoginManager.getInstance(); //设置登录权限 此处如果不添加 "user_friends" 你是不能访问好友信息的 LoginManager.getInstance().logInWithReadPermissions(this, Arrays.asList(new String[]{"public_profile", "email", "user_friends"})); //登录按钮 LoginButton loginButton = (LoginButton)findViewById(R.id.login_button); loginButton.registerCallback(callbackManager, new FacebookCallback<LoginResult>() { @Override public void onSuccess(LoginResult loginResult) { // App code Log.e("test","success"); //取得自己的信息 Log.e("personProfile","User ID: " + loginResult.getAccessToken().getUserId() + "\n" + "Auth Token: " + loginResult.getAccessToken().getToken()); //取得你的好友信息,回调中就是你的好友信息 new GraphRequest( AccessToken.getCurrentAccessToken(), "/me/friends", null, HttpMethod.GET, new GraphRequest.Callback() { public void onCompleted(GraphResponse response) { /* handle the result */ //TextView info = (TextView)findViewById(R.id.info); //info.setText("Members = " + response.toString()); Log.e("callback","Members: " + response.toString()); } } ).executeAsync(); } @Override public void onCancel() { // App code Log.e("test","cancel"); } @Override public void onError(FacebookException exception) { // App code Log.e("test","error"); } }); } @Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { callbackManager.onActivityResult(requestCode, resultCode, data); } }
以上你就可以添加了facebook 的SDK 。这里面有一个大坑,就是当你想取得你的好友信息时
注意这里:自从Facebook sdk V2.0后 你就不能取得你的所有好友的信息了
(具体可以看facebook的官方api)
你只能取得同样登陆此app的好友,简而言之就是谁用了这个app并登陆的时候允许授权了
这样获取你才能看到你的好友的信息,不然的话你是看不到任何信息的。而且你的登陆权限里
必须要添加 user_friends 这个permission ,具体就是上面代码里的那个
下面是我的layout xml的设置
<?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" android:paddingBottom="@dimen/activity_vertical_margin" android:paddingLeft="@dimen/activity_horizontal_margin" android:paddingRight="@dimen/activity_horizontal_margin" android:paddingTop="@dimen/activity_vertical_margin" tools:context="testfb.com.facebook.MainActivity"> <com.facebook.login.widget.LoginButton android:id="@+id/login_button" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="center_horizontal" android:layout_marginTop="30dp" android:layout_marginBottom="30dp" /> <!--<TextView--> <!--android:layout_width="wrap_content"--> <!--android:layout_height="wrap_content"--> <!--android:id="@+id/info"--> <!--android:layout_alignParentLeft="true"--> <!--android:layout_alignParentTop="true"--> <!--android:textSize="18sp"--> <!--/>--> </RelativeLayout>
以上就是我的添加流程,只限于我的AS的版本,其他版本不能保证完全好用,可以自行测试。
推荐一个比较好的国外网站(就是下面这个流程更加详细),里面有FB 和 Google 的SDK 添加流程
欢迎交流