Android下集成FacebookSDK

项目中需要发表自己的评论到Facebook,需要集成FacebookSDK,我这里用的是FacebookSDK3.5
下面是我网上找的集成FacebookSDK的步骤,基本和我实现的步骤一致,我就不重新写了,直接copy过来。
//******************************************************************************
简单介绍一下:
大家都知道,FaceBook在国外很多人使用,而国内就比较少人使用。我们做程序员的就应该不断的去学习再学习,这样才能充实自己,谁又说不是呢!好吧,废话不多说了,下面就让我们一起进入FaceBook学习之旅吧!

开始学习的时候大家应该要弄个能够翻 墙的网络,国内网络是不能进入facebook网站的,大家可以去弄个“翻 墙软件”或VPN什么的!LZ这边使用的是一个免费的翻 墙软件,网速还可以,流量也不限的,不过就是每隔十分钟断一次,就是这点比较坑爹,不过对于我们只需要测试,还是勉勉强强可以接受的。有条件的可以去买个VPN这样就最好了。
http://www.xroute.net/(XROUTE 网络加速器)  这是它的官网,没条件的可以跟LZ一样使用这个软件来学习。

1、下载最新 Facebook SDK for Android 3.0   下载地址:http://developers.facebook.com/android/
2、下载好 解压 facebook-android-sdk-3.0
用eclipse导入工程,导入解压文件夹下的facebook文件夹 出现 FacebookSDK 项目
3、创建 第一个Facebook项目工程 FirstFacebook 导入FacebookSDK 项目包





注意:如果导入的项目包显示为错误的时候,就要查看一下FacebookSDK项目包和自己创建的工程是否在同一目录下
    如果导入完成后自己创建的工程报错,看看工程下libs文件夹下是否有android-support-v4.jar 这个jar文件,如果有的话,就把它给删了,然后重新导入
    FacebookSDK项目包。原因是FacebookSDK下也集成了这个包,所以会有冲突。
4、进入https://developers.facebook.com/  facebook开发者网站,没账号的注册一个帐号,有的就直接登录。然后点击导航栏上的Apps进入应用专区



创建一个新的App 点击Create New App 按钮,弹出下面对话框。App Name为给这应用取的一个名字,下面的可以忽略不用填,直接点击继续
    


点击Native Android App  填入以下数据:
Package Name 应用包名
Class Name 应用入口Activity完整类名
Key Hashes  哈希值
Facebook Login 选择启用
保存更改。







获取哈希值的方法:
下载 openssl-0.9.8k_WIN32  下载地址:[url]http://download.csdn.net/detail/h7870181/5054864 [/url]  
或者 直接本文最下面附件中下载
下载完成后,解压到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





注意还有一个地方也要填入刚刚获取的哈希值!




ok ! 配置就完成了!

5、下面就让我们来看看项目工程中是怎么配置的
  在AndroidMainfest.xml中添加网络权限和在facebook中创建应用的App Id
Xml代码   收藏代码
  1. <?xml version="1.0" encoding="utf-8"?>  
  2. <manifest xmlns:android="http://schemas.android.com/apk/res/android"  
  3.     package="com.thirdfacebook"  
  4.     android:versionCode="1"  
  5.     android:versionName="1.0" >  
  6.   
  7.     <uses-sdk  
  8.         android:minSdkVersion="8"  
  9.         android:targetSdkVersion="16" />  
  10.     <uses-permission android:name="android.permission.INTERNET"/>  
  11.   
  12.     <application  
  13.         android:allowBackup="true"  
  14.         android:icon="@drawable/ic_launcher"  
  15.         android:label="@string/app_name"  
  16.         android:theme="@style/AppTheme" >  
  17.         <activity  
  18.             android:name="com.thirdfacebook.MainActivity"  
  19.             android:label="@string/app_name" >  
  20.             <intent-filter>  
  21.                 <action android:name="android.intent.action.MAIN" />  
  22.                 <category android:name="android.intent.category.LAUNCHER" />  
  23.             </intent-filter>  
  24.         </activity>  
  25.         <activity android:name="com.facebook.LoginActivity"/>  
  26.         <meta-data android:name="com.facebook.sdk.ApplicationId" android:value="@string/app_id"/>  
  27.     </application>  
  28.   
  29. </manifest>  


在string.xml中加入app_id,注意,这里app_id似乎只能在string.xml配置,不能直接这样写<meta-data android:name="com.facebook.sdk.ApplicationId" android:value="158121714340391"/>
Xml代码   收藏代码
  1. <?xml version="1.0" encoding="utf-8"?>  
  2. <resources>  
  3.     <string name="app_name">ThirdFacebook</string>  
  4.     <string name="hello_world">Hello world!</string>  
  5.     <string name="menu_settings">Settings</string>  
  6.     <string name="app_id">158121714340391</string>  
  7. </resources>  


OK!运行项目没有报错,证明集成FacebookSDK就成功了。
//******************************************************************************
下篇文章则介绍一下使用Facebook发表评论!注意必须集成SDK3.5。如果手机没有安装Facebook app则会报FacebookException;如果安装了,没有登录过Facebook,则弹出Facebook登录界面,否则直接进入发表评论界面。注意,手机也需要 翻 墙!

Java代码   收藏代码
  1. package com.reyo.goingus;  
  2.   
  3. import java.security.MessageDigest;  
  4. import java.security.NoSuchAlgorithmException;  
  5.   
  6. import android.app.Activity;  
  7. import android.content.Context;  
  8. import android.content.Intent;  
  9. import android.content.pm.PackageInfo;  
  10. import android.content.pm.PackageManager;  
  11. import android.content.pm.PackageManager.NameNotFoundException;  
  12. import android.content.pm.Signature;  
  13. import android.os.Bundle;  
  14. import android.util.Base64;  
  15. import android.util.Log;  
  16. import android.widget.Toast;  
  17.   
  18. import com.facebook.FacebookException;  
  19. import com.facebook.Session;  
  20. import com.facebook.SessionState;  
  21. import com.facebook.UiLifecycleHelper;  
  22. import com.facebook.widget.FacebookDialog;  
  23. import com.facebook.widget.LoginButton;  
  24.   
  25. public class FacebookLoginActivity extends Activity {  
  26.   
  27.     private Context context;  
  28.      private UiLifecycleHelper uiHelper;    
  29.     @Override  
  30.     protected void onCreate(Bundle savedInstanceState) {  
  31.         super.onCreate(savedInstanceState);  
  32.         setContentView(R.layout.activity_facebook);//随便一个布局即可  
  33.         context=this;  
  34. //      LoginButton authButton = (LoginButton)findViewById(R.id.login_button);  
  35. //      authButton.setFragment(this);    
  36. //      authButton.setReadPermissions(Arrays.asList("email","user_likes", "user_status"));  
  37.           
  38.         /** 
  39.          * 打印哈希值 
  40.          */  
  41.         try {  
  42.             PackageInfo info = getPackageManager().getPackageInfo(  
  43.                     "com.reyo.goingus", PackageManager.GET_SIGNATURES);  
  44.             for (Signature signature : info.signatures) {  
  45.                 MessageDigest md = MessageDigest.getInstance("SHA");  
  46.                 md.update(signature.toByteArray());  
  47.                 //Bk0955xpaU4AYJVWumc6PHuDSX8=  
  48.                 Log.i("tag","KeyHash:"+Base64.encodeToString(md.digest(), Base64.DEFAULT));  
  49.             }  
  50.         } catch (NameNotFoundException e) {  
  51.   
  52.         } catch (NoSuchAlgorithmException e) {  
  53.   
  54.         }  
  55.   
  56.         uiHelper = new UiLifecycleHelper(this, callback);    
  57.         uiHelper.onCreate(savedInstanceState);    
  58.           
  59.         try {  
  60.             FacebookDialog shareDialog = new FacebookDialog.ShareDialogBuilder(this)  
  61.                     .setLink("https://developers.facebook.com/android")  
  62.                     .setApplicationName("BGR")  
  63.                     .setDescription("description")  
  64.                     .setName("name")  
  65.                     .setCaption("caption")  
  66.                     .setPlace("place")  
  67.                     .build();  
  68.             uiHelper.trackPendingDialogCall(shareDialog.present());  
  69.   
  70.         } catch (FacebookException e) {  
  71.             Toast.makeText(context, "Facebook app is not installed", Toast.LENGTH_SHORT).show();  
  72.         } catch (Exception e) {  
  73.             Toast.makeText(context, "Unexpect Exception", Toast.LENGTH_SHORT).show();  
  74.         }  
  75.   
  76.     }  
  77.       
  78.     @Override    
  79.     public void onResume() {    
  80.         super.onResume();    
  81.     
  82.         // For scenarios where the main activity is launched and user    
  83.         // session is not null, the session state change notification    
  84.         // may not be triggered. Trigger it if it's open/closed.    
  85.         Session session = Session.getActiveSession();    
  86.         if (session != null && (session.isOpened() || session.isClosed())) {    
  87.             onSessionStateChange(session, session.getState(), null);    
  88.         }    
  89.     
  90.         uiHelper.onResume();    
  91.     }    
  92.        
  93.     @Override    
  94.     public void onActivityResult(int requestCode, int resultCode, Intent data) {    
  95.         super.onActivityResult(requestCode, resultCode, data);    
  96.         uiHelper.onActivityResult(requestCode, resultCode, data);    
  97.         finish();  
  98.     }    
  99.       
  100.     @Override    
  101.     public void onPause() {    
  102.         super.onPause();    
  103.         uiHelper.onPause();    
  104.     }    
  105.     
  106.     @Override    
  107.     public void onDestroy() {    
  108.         super.onDestroy();    
  109.         uiHelper.onDestroy();    
  110.     }    
  111.     
  112.     @Override    
  113.     public void onSaveInstanceState(Bundle outState) {    
  114.         super.onSaveInstanceState(outState);    
  115.         uiHelper.onSaveInstanceState(outState);    
  116.     }    
  117.       
  118.     private Session.StatusCallback callback = new Session.StatusCallback() {    
  119.         @Override    
  120.         public void call(Session session, SessionState state,Exception exception) {  
  121.             onSessionStateChange(session, state, exception);    
  122.         }    
  123.     };    
  124.       
  125.     private void onSessionStateChange(Session session, SessionState state,    
  126.             Exception exception) {    
  127.         if (state.isOpened()) {    
  128.             Log.i("tag""Logged in...");    
  129.         } else if (state.isClosed()) {    
  130.             Log.i("tag""Logged out...");    
  131.         }    
  132.     }  
  133.   

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值