由于公司游戏要进行海外推广,所以要我们接入FBSDK 实现登录,分享,投放,所以写这篇文章,也算是个工作总结。
1、资料
(1).FB SDK github源码地址为
(2): [FB SDK中文接入文档]
2.创建应用,获取应用编号和密钥
这些事情,文档中都有详细描述,我就不进行赘述了
3.下载FB SDK,并配置参数
(1).解压facebook-android-sdk-4.25.0.aar文件,并将其中的assets,res,AndroidManifest.xml,classes.jar等复制的eclipse 新建工程下,并配置项目为library
(2).由于FB SDK引用了v7包和资源,所以要把v7项目引入到FB SDk中来(注:不只是v7包,项目一般在你的sdk目录下的extrasandroidsupportv7)
(3) 配置参数,在eclipse res/values/strings.xml中加入
<string name="facebook_app_id">133094273807591</string>
(4),在AndroidManifest中,添加权限,配置参数
<uses-permission android:name="android.permission.INTERNET"/>
application下配置参数
<meta-data android:name="com.facebook.sdk.ApplicationId" android:value="@string/facebook_app_id"/>
将FB SDK自定义Activity加到application中
<activity
android:name="com.facebook.FacebookActivity"
android:configChanges="keyboard|keyboardHidden|screenLayout|screenSize|orientation"
android:label="@string/app_name"
android:theme="@android:style/Theme.Translucent.NoTitleBar" />
(5).引入新建的FB sdk工程
4.接入 FB SDK
(1).在自定义application 中初始化SDK参数
public class MyApplication extends Application{
public void onCreate() {
super.onCreate();
FacebookSdk.sdkInitialize(getApplicationContext());
AppEventsLogger.activateApp(this);
}
}
(2),新建LoginActivity接入FB SDK代码
public class LoginActivity extends Activity {
private static final String PERMISSION = "public_profile";
private static final int PICK_PERMS_REQUEST = 0;
private CallbackManager callbackManager;
@Override
protected void onCreate(final Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// 注册登录回调
callbackManager = CallbackManager.Factory.create();
LoginManager loginManager = LoginManager.getInstance();
loginManager.setDefaultAudience(loginManager.getDefaultAudience());
loginManager.setLoginBehavior(loginManager.getLoginBehavior());
loginManager.logInWithReadPermissions(LoginActivity.this,
Arrays.asList(PERMISSION));
LoginManager.getInstance().registerCallback(callbackManager,
new FacebookCallback<LoginResult>() {
@Override
public void onSuccess(final LoginResult loginResult) {
// App code
Toast.makeText(LoginActivity.this, "登录成功",
Toast.LENGTH_LONG).show();
Intent intent = new Intent(LoginActivity.this,
AppActivity.class);
startActivity(intent);
}
@Override
public void onCancel() {
// App code
Toast.makeText(LoginActivity.this, "登录失败,请稍后重试",
Toast.LENGTH_LONG).show();
}
@Override
public void onError(final FacebookException exception) {
// App code
Toast.makeText(LoginActivity.this, "登录失败,请稍后重试",
Toast.LENGTH_LONG).show();
}
});
}
/**
* 处理登录结果
*/
@Override
protected void onActivityResult(final int requestCode,
final int resultCode, final Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (requestCode == PICK_PERMS_REQUEST) {
if (resultCode == RESULT_OK) {
LoginManager loginManager = LoginManager.getInstance();
loginManager.setDefaultAudience(loginManager
.getDefaultAudience());
loginManager.setLoginBehavior(loginManager.getLoginBehavior());
loginManager.logInWithReadPermissions(LoginActivity.this,
Arrays.asList(PERMISSION));
}
} else {
callbackManager.onActivityResult(requestCode, resultCode, data);
}
}
}