因项目要求,需要实现FaceBook的登录和分享,于是 百度+google+翻墙。终于实现了!一下希望对你能起到帮助

1.首先要申请账号,下载Sdk  因为连接国外的网站所以需要做点处理

    https://www.vcupmars.com/user/2384183/myvpn  可申请账号  然后设置Vpn(不会设置的童鞋自行百度)

   连接上了之后 进行app注册

 注意此处的hashKey  对你程序能登录和分享成功有很大关系  有两种获取方法  代码和cmd

  代码

try {


CMD

获取哈希值的方法: 
下载 openssl-0.9.8k_WIN32  下载地址:    
或者直接本文最下面附件中下载 
下载完成后,解压到C盘根目录 
进入cmd  粘贴以下字符串,keystore默认密码为android 注意不要写错了。出来一串字符则为我们所需要的哈希值。 
keytool -export -alias myAlias -keystore C:\Users\Administrator\.android\debug.keystore | C:\openssl-0.9.8k_WIN32\bin\openssl sha1 -binary | C:\openssl-0.9.8k_WIN32\bin\openssl enc -a -e 


填写完之后就是下载SDK了

 官网可以下载,可怜的我连接的VPN不能下载,只能到git上面去找了:https://github.com/facebook/facebook-android-sdk

下载解压之后

facebook需要导入项目用作libs  samples是官方Demo  加入libs下的两个jar包 

 自行导入修改应该是没有问题的 如有问题就是jar包导错了,自行看问题解决问题

2.ok此时我们可以往自己项目中加入libs 并Coding了

public class FaceBookTest extends Activity implements OnClickListener{

private Button m_face_login;
private Button m_face_share;
private Button m_face_login_out;

private UiLifecycleHelper uiHelper;

private Session.StatusCallback statusCallback = new SessionStatusCallback();
 
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.face);

uiHelper = new UiLifecycleHelper(this, callback);
         uiHelper.onCreate(savedInstanceState);
initlayout();

try {

}

private void initlayout(){
m_face_login = (Button) this.findViewById(R.id.face_login);
m_face_share = (Button) this.findViewById(R.id.face_share);
m_face_login_out = (Button) this.findViewById(R.id.face_login_out);

m_face_login.setOnClickListener(this);
m_face_share.setOnClickListener(this);
m_face_login_out.setOnClickListener(this);
}

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
 Session.getActiveSession().onActivityResult(this, requestCode,resultCode, data);
uiHelper.onActivityResult(requestCode, resultCode, data, new FacebookDialog.Callback() {

}
 
@Override
public void onClick(View v) {
switch (v.getId()) {
case R.id.face_login:
doLogin();//在没有app的情况下进行网页授权
break;

case R.id.face_share:
doShare();//在没有APP的情况下 不能分享
break;

case R.id.face_login_out:
onClickLogout();
break;
 
default:
break;
}
}
 
private void doLogin(){
 Session.openActiveSession(this, true, new StatusCallback() {
 @Override
 public void call(Session session, SessionState state, Exception exception) {
 if(session.isOpened()){
 // get token
 Toast.makeText(FaceBookTest.this, session.getAccessToken(), Toast.LENGTH_SHORT).show();
 }
 }
 });

}

private class SessionStatusCallback implements Session.StatusCallback {
     if(session.isOpened()){
// get token
Toast.makeText(FaceBookTest.this, session.getAccessToken(), Toast.LENGTH_SHORT).show();
}

private void onClickLogout() {

public void doShare(){

 }

实现: 登录获取token 分享 退出

doLogin();//在没有app的情况下进行网页授权

doShare();//在没有APP的情况下 不能分享

onClickLogout();

app_key  需要在Strings 里面声明,直接卸载配置文件当中会找不到Key 报错!

在运行代码的时候 前期一直不能成功,然后看提示语 发现都是hashKey的问题,此处需要多注意一下,这个hashKey和你得签名文件是有关联的,不同的eclispe或者打包工具对应不同的hashKey

根据提示 很明白  是分享的dialog

在.setApplicationName的时候 和注册APP的是不匹配的  自己去看申请是填写的名称 修改即可

onComplete代码发现有data

于是分别在取消分享和成功分享的时候查看data

Ok此时就知道了

String result = data.getString("com.facebook.platform.extra.COMPLETION_GESTURE");//cancel取消   post成功

最后  注意一点的是  facebook的第三方库 要放在你得项目的同级磁盘下,不然导入库的时候会报错

以上个人测试是通过的。如有大牛研究得更多的话,可留言告知!

代码未整理 但应该可以明白