Android 接入Facebook分享功能

Android接入Facebook的分享

  1. 首先注册成为Fackbook开发者。 https://developers.facebook.com
  2. 登陆到Facebook开发者后台然后点击"Apps" -> "Add a New App",输入App的名称“TeshShare”并选择分类,进行创建App

  3. 点击 "Apps" -> "TestShare" ,就是我们刚才创建的App ,然后点击左侧的"Settings",进行相关的信息设置.

    配置如下信息

    (1). App的包名 com.test.share

    (2). App的主Activity名字  com.test.share.MainActivity

    (3). 签名文件的哈希值

    eclipse debug签名hash值获取方法  打开mac终端输入下面的命令

    keytool -exportcert -alias androiddebugkey -keystore ~/.android/debug.keystore | openssl sha1 -binary | openssl base64

    正式签名需要在程序中添加如下代码签名打包后查看控制台的输入值将这个值复制到后台进行配置。这个我们先使用Eclipse的debug签名哈希值。代码如下

  4. 	/**
    	 * 获取签名Key的hash值facebook后台需要添加这个如果这个值跟后台的对不上那么会分享失败提示Key Hash值不对
    	 */
    	public static void getKeyHash(Context ctx){
    
    		// Add code to print out the key hash
    	    try {
    	        PackageInfo info = ctx.getPackageManager().getPackageInfo(
    	                "com.test.share", //替换成你app的包名
    	                PackageManager.GET_SIGNATURES);
    	        for (Signature signature : info.signatures) {
    	            MessageDigest md = MessageDigest.getInstance("SHA");
    	            md.update(signature.toByteArray());
    	            Log.d("KeyHash:", Base64.encodeToString(md.digest(), Base64.DEFAULT));
    	            }
    	    } catch (Exception e) {
    	    
    	    }
    	}	

4.下载 Facebook SDK  如下图。讲facebook导入到Eclipse中。将导入的facebook做为lib工程add到我们的工程中

乖乖的打开VPN,到Google Play上去安装Facebook吧。

5.配置facebook appid和网络访问权限

在strings.xml中添加

 <string name ="facebook_app_id">365646333616560</string>

在AndroidManifest.xml添加

    <meta-data android:name="com.facebook.sdk.ApplicationId" android:value="@string/facebook_app_id"/>
        
   
   <uses-permission android:name="android.permission.INTERNET" />

6.列出MainActivity的代码

package com.test.share;
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.util.Log;
import android.view.Menu;
import android.view.View;
import android.widget.Toast;
import com.facebook.UiLifecycleHelper;
import com.facebook.widget.FacebookDialog;
public class MainActivity extends Activity {
	private UiLifecycleHelper uiHelper;
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		uiHelper = new UiLifecycleHelper(this, null);
	    uiHelper.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);

		final Activity  activity = this;

		findViewById(R.id.button1).setOnClickListener(new View.OnClickListener() {

			@Override
			public void onClick(View arg0) {

				// 判断是否安装Facebook
				if (FacebookDialog.canPresentShareDialog(activity,
						FacebookDialog.ShareDialogFeature.SHARE_DIALOG)) {

					FacebookDialog shareDialog = new FacebookDialog.ShareDialogBuilder(
							activity).setLink("www.baidu.com")
							.setApplicationName("TestShare").setName("test")
							.setCaption("this is  a test share ").build();

					uiHelper.trackPendingDialogCall(shareDialog.present());
				} else {
					Toast.makeText(activity, "Facebook app is not installed",
							Toast.LENGTH_SHORT).show();
				}

			}
		});
	}
	@Override
	protected void onActivityResult(int requestCode, int resultCode, Intent data) {
	    super.onActivityResult(requestCode, resultCode, data);
	    uiHelper.onActivityResult(requestCode, resultCode, data, new FacebookDialog.Callback() {
	        @Override
	        public void onError(FacebookDialog.PendingCall pendingCall, Exception error, Bundle data) {
	            Log.e("Activity", String.format("Error: %s", error.toString()));
	        }
	        @Override
	        public void onComplete(FacebookDialog.PendingCall pendingCall, Bundle data) {
	            Log.i("Activity", "Success!");
	        }
	    });
	}

	@Override
	protected void onResume() {
	    super.onResume();
	    uiHelper.onResume();
	}
	@Override
	protected void onSaveInstanceState(Bundle outState) {
	    super.onSaveInstanceState(outState);
	    uiHelper.onSaveInstanceState(outState);
	}
	@Override
	public void onPause() {
	    super.onPause();
	    uiHelper.onPause();
	}
	@Override
	public void onDestroy() {
	    super.onDestroy();
	    uiHelper.onDestroy();
	}
	@Override
	public boolean onCreateOptionsMenu(Menu menu) {
		// Inflate the menu; this adds items to the action bar if it is present.
		getMenuInflater().inflate(R.menu.main, menu);
		return true;
	}
}

7.运行测试

点击发布提示“分享成功”

8.注意的问题

(1). 分享时候的AppName问题

//setApplicationName("必须是你后台设置的AppName")
FacebookDialog shareDialog = new FacebookDialog.ShareDialogBuilder(
							activity).setLink("www.baidu.com")
							.setApplicationName("TestShare").setName("test")
							.setCaption("this is  a test share ").build();	

(2). 发布的时候签名哈希值在后台要改为正式签名的哈希值

(3). 关于混淆

-keep class com.facebook.** { *; }
-keepattributes Signature

(4).正式发布的时候后台要改一个状态

"Status&Review" ->  "Do you want to meak this app and all its live...public ? " -> "YES"   

最后附上Demo源码下载地址

Demo

好了,今天跟大家分享到这里。

时间: 2024-10-15 17:23:52

Android 接入Facebook分享功能的相关文章

Android接入Google+分享功能

Android使用Google+分享功能 1.首先将<android-sdk-folder>/extras/google/google_play_services 导入到Eclipse中 如果没有这个工程首先更新到最新的ADT,然后打开Android SDK Manager进行下载 2.然后将其作为lib工程add到我们的工程上 3.主要的分享代码: //google+分享 public void doGooglePlusShare(Activity mContext) { // 判断是否安装

Qt on Android:添加分享功能

前几天(2015-4-15)看到老外的一篇文章,讲如何使用 Qt on Android 来向社交网络分享信息,使用 Qt 提供的 JNI 功能来实现,和我之前写的 QtAndroid 详解系列文章很搭啊,特此翻译过来. 原文在这里:Sharing with Qt on Android .是 2014 年 12 月 12 日的文章,恨不相逢未嫁时--Sigh,又胡扯了--还是 Google 强大,可以搜索到好东西. 原文作者 zagge ,译者foruok(http://blog.csdn.net

网页上facebook分享功能的具体实现

1,一个链接: 参数是要分享的页面的链接 代码如下: <a style="width:35px; height:40px; position:relative; top:10px; left:48px; " title="Share on Facebook" target="_blank" onclick="javascript:window.open('http://www.facebook.com/sharer.php?u='

Android调用系统分享功能以及createChooser的使用

工程结构 //效果图 点击测试分享                                                                                                          点击createChoose妙用       主要是看右边的,可不是用什么Dialog来搞的哦,而是你Activity程序,可以激活进去了 提示:这个东西可以延伸到一个音频文件,打开时,可以调用你的音乐播放器来播放哦,视频,图片,也是类似,可以调用你自己

android接入微信分享(朋友、朋友圈)、QQ分享(好友、空间)

1.申请注册你的appid 2.下载sdk QQ: http://wiki.open.qq.com/wiki/mobile/SDK%E4%B8%8B%E8%BD%BD 微信:https://open.weixin.qq.com/cgi-bin/readtemplate?t=resource/app_download_android_tmpl&lang=zh_CN 3.将下载的文件 导入进工程下的app/libs/下,liba开头的的微信需要的,另外两个是QQ需要的 阅读官方文档QQ:http:/

android - 调用系统分享功能分享图片

step1: 编写分享代码, 将Uri的生成方式改为由FileProvider提供的临时授权路径,并且在intent中添加flag 注意:在Android7.0之后,调用系统分享,传入URI的时候可能会导致程序闪退崩溃.这是由于7.0的新的文件权限导致的.下面的代码对其做了处理 public static int sharePic(Context context, String picFilePath) { File shareFile = new File(picFilePath); if (

Android实现微信分享及注意事项

一.获取帮助文档并下载相关资料 首先打开微信开放平台:https://open.weixin.qq.com/ 如果没有注册,请先注册并上传开发者资料等待审核. 资源中心----移动应用开发----分享与收藏功能----Android开发手册 开发手册链接地址:https://open.weixin.qq.com/zh_CN/htmledition/res/dev/document/sdk/android/index.html 资源中心----移动应用开发----接入指南---Android接入指

Android 中实现分享和第三方登陆---以新浪微博为例

尊重原创:http://blog.csdn.net/yuanzeyao/article/details/38781957 第三方登陆和分享功能在目前大部分APP中都有,分享功能可以将自己觉得有意义的东西分享给身边的朋友,而第三方登陆可以借助已经有巨大用户基础的平台(如QQ和新浪微博)的账号,让用户在使用自己APP的时候不用注册,直接使用第三方账号登陆,从而避免了注册的过程(其实是服务器端帮你注册),这对于吸引更多的用户非常有意义.下面我们就以新浪微博为例,讲解如何实现分享功能和第三方登陆.首先你

在Android中使App高速、简单地支持新浪微博、微信、QQ、facebook等十几个主流社交平台的分享功能

前言 在如今的APP或者游戏中,分享功能差点儿已经成为标配.分享功能不但能够满足用户的需求.也能够为产品带来很多其它的用户,甚至能够对用户的行为.活跃度.年龄段等情况进行数据统计,使得软件公司能够对产品进行更精准的定位.今天我们就来简单剖析市场上一款优秀的分享SDK以及其集成过程.这款分享SDK就是友盟的社会化分享组件. 友盟社会化分享,帮助移动应用高速具备分享.登录.评论.喜欢等社交功能,提升用户粘度.助力产品推广,并提供实时.全面的社会化数据统计分析服务. 很多其它请訪问友盟社会化组件官网.