项目中需要发表自己的评论到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
在string.xml中加入app_id,注意,这里app_id似乎只能在string.xml配置,不能直接这样写<meta-data android:name="com.facebook.sdk.ApplicationId" android:value="158121714340391"/>
OK!运行项目没有报错,证明集成FacebookSDK就成功了。
//******************************************************************************
下篇文章则介绍一下使用Facebook发表评论!注意必须集成SDK3.5。如果手机没有安装Facebook app则会报FacebookException;如果安装了,没有登录过Facebook,则弹出Facebook登录界面,否则直接进入发表评论界面。注意,手机也需要 翻 墙!
下面是我网上找的集成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 version="1.0" encoding="utf-8"?>
- <manifest xmlns:android="http://schemas.android.com/apk/res/android"
- package="com.thirdfacebook"
- android:versionCode="1"
- android:versionName="1.0" >
- <uses-sdk
- android:minSdkVersion="8"
- android:targetSdkVersion="16" />
- <uses-permission android:name="android.permission.INTERNET"/>
- <application
- android:allowBackup="true"
- android:icon="@drawable/ic_launcher"
- android:label="@string/app_name"
- android:theme="@style/AppTheme" >
- <activity
- android:name="com.thirdfacebook.MainActivity"
- android:label="@string/app_name" >
- <intent-filter>
- <action android:name="android.intent.action.MAIN" />
- <category android:name="android.intent.category.LAUNCHER" />
- </intent-filter>
- </activity>
- <activity android:name="com.facebook.LoginActivity"/>
- <meta-data android:name="com.facebook.sdk.ApplicationId" android:value="@string/app_id"/>
- </application>
- </manifest>
在string.xml中加入app_id,注意,这里app_id似乎只能在string.xml配置,不能直接这样写<meta-data android:name="com.facebook.sdk.ApplicationId" android:value="158121714340391"/>
- <?xml version="1.0" encoding="utf-8"?>
- <resources>
- <string name="app_name">ThirdFacebook</string>
- <string name="hello_world">Hello world!</string>
- <string name="menu_settings">Settings</string>
- <string name="app_id">158121714340391</string>
- </resources>
OK!运行项目没有报错,证明集成FacebookSDK就成功了。
//******************************************************************************
下篇文章则介绍一下使用Facebook发表评论!注意必须集成SDK3.5。如果手机没有安装Facebook app则会报FacebookException;如果安装了,没有登录过Facebook,则弹出Facebook登录界面,否则直接进入发表评论界面。注意,手机也需要 翻 墙!
- package com.reyo.goingus;
- import java.security.MessageDigest;
- import java.security.NoSuchAlgorithmException;
- import android.app.Activity;
- import android.content.Context;
- import android.content.Intent;
- import android.content.pm.PackageInfo;
- import android.content.pm.PackageManager;
- import android.content.pm.PackageManager.NameNotFoundException;
- import android.content.pm.Signature;
- import android.os.Bundle;
- import android.util.Base64;
- import android.util.Log;
- import android.widget.Toast;
- import com.facebook.FacebookException;
- import com.facebook.Session;
- import com.facebook.SessionState;
- import com.facebook.UiLifecycleHelper;
- import com.facebook.widget.FacebookDialog;
- import com.facebook.widget.LoginButton;
- public class FacebookLoginActivity extends Activity {
- private Context context;
- private UiLifecycleHelper uiHelper;
- @Override
- protected void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- setContentView(R.layout.activity_facebook);//随便一个布局即可
- context=this;
- // LoginButton authButton = (LoginButton)findViewById(R.id.login_button);
- // authButton.setFragment(this);
- // authButton.setReadPermissions(Arrays.asList("email","user_likes", "user_status"));
- /**
- * 打印哈希值
- */
- try {
- PackageInfo info = getPackageManager().getPackageInfo(
- "com.reyo.goingus", PackageManager.GET_SIGNATURES);
- for (Signature signature : info.signatures) {
- MessageDigest md = MessageDigest.getInstance("SHA");
- md.update(signature.toByteArray());
- //Bk0955xpaU4AYJVWumc6PHuDSX8=
- Log.i("tag","KeyHash:"+Base64.encodeToString(md.digest(), Base64.DEFAULT));
- }
- } catch (NameNotFoundException e) {
- } catch (NoSuchAlgorithmException e) {
- }
- uiHelper = new UiLifecycleHelper(this, callback);
- uiHelper.onCreate(savedInstanceState);
- try {
- FacebookDialog shareDialog = new FacebookDialog.ShareDialogBuilder(this)
- .setLink("https://developers.facebook.com/android")
- .setApplicationName("BGR")
- .setDescription("description")
- .setName("name")
- .setCaption("caption")
- .setPlace("place")
- .build();
- uiHelper.trackPendingDialogCall(shareDialog.present());
- } catch (FacebookException e) {
- Toast.makeText(context, "Facebook app is not installed", Toast.LENGTH_SHORT).show();
- } catch (Exception e) {
- Toast.makeText(context, "Unexpect Exception", Toast.LENGTH_SHORT).show();
- }
- }
- @Override
- public void onResume() {
- super.onResume();
- // For scenarios where the main activity is launched and user
- // session is not null, the session state change notification
- // may not be triggered. Trigger it if it's open/closed.
- Session session = Session.getActiveSession();
- if (session != null && (session.isOpened() || session.isClosed())) {
- onSessionStateChange(session, session.getState(), null);
- }
- uiHelper.onResume();
- }
- @Override
- public void onActivityResult(int requestCode, int resultCode, Intent data) {
- super.onActivityResult(requestCode, resultCode, data);
- uiHelper.onActivityResult(requestCode, resultCode, data);
- finish();
- }
- @Override
- public void onPause() {
- super.onPause();
- uiHelper.onPause();
- }
- @Override
- public void onDestroy() {
- super.onDestroy();
- uiHelper.onDestroy();
- }
- @Override
- public void onSaveInstanceState(Bundle outState) {
- super.onSaveInstanceState(outState);
- uiHelper.onSaveInstanceState(outState);
- }
- private Session.StatusCallback callback = new Session.StatusCallback() {
- @Override
- public void call(Session session, SessionState state,Exception exception) {
- onSessionStateChange(session, state, exception);
- }
- };
- private void onSessionStateChange(Session session, SessionState state,
- Exception exception) {
- if (state.isOpened()) {
- Log.i("tag", "Logged in...");
- } else if (state.isClosed()) {
- Log.i("tag", "Logged out...");
- }
- }
- }