1.后台新建facebook ID
2.AndroidManifext.xml文件中添加

                

3.build.gradle文件加入

dependencies {
//fackbook 分享
compile ‘com.facebook.android:facebook-android-sdk:[5,6)’
}

4.onCreator方法中初始化
FtFaceBookLogin.getInstance().initFaceBook(activity);
5.调用登录
public static String loginFackBook() {//fackbook登录
if(((FtPay)Manager.getInstance().ftPay).activity!=null) {
FtFaceBookLogin.getInstance().faceBookLogin(((FtPay) Manager.getInstance().ftPay).activity);
}
return null;
}

6.登录回调添加

@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
// TODO Auto-generated method stub
super.onActivityResult(requestCode, resultCode, data);

FtFaceBookLogin.getInstance().setOnActivityResult(requestCode, resultCode, data);//fackbook 登录回调}

7.新建FtFaceBookLogin.java文件
package com.ftaro.adapter;
import android.app.Activity;
import android.content.Context;
import android.content.Intent;
import android.util.Log;
import android.widget.Toast;

import com.facebook.AccessToken;
import com.facebook.CallbackManager;
import com.facebook.FacebookCallback;
import com.facebook.FacebookException;
import com.facebook.GraphRequest;
import com.facebook.GraphResponse;
import com.facebook.login.LoginManager;
import com.facebook.login.LoginResult;

import org.json.JSONObject;

import java.util.Arrays;

//fackbook 登录
public class FtFaceBookLogin {
private static CallbackManager mFaceBookCallBack;
private static FtFaceBookLogin sInstance;
private AccessToken mAccessToken;
private FtFaceBookLogin() {
}
/**
* 单例
*
* @return
*/
public static FtFaceBookLogin getInstance() {
if (sInstance == null) {
synchronized (FtFaceBookLogin.class) {
if (sInstance == null) {
sInstance = new FtFaceBookLogin();

            }        }    }    return sInstance;}/** * 开始 * * @param context */public void faceBookLogin(Context context) {    LoginManager.getInstance()            .logInWithReadPermissions((Activity) context,                    Arrays.asList("public_profile"));}/** * 初始化 */public void initFaceBook(final Context context) {    mFaceBookCallBack = CallbackManager.Factory.create();    if (mFaceBookCallBack != null) {        LoginManager.getInstance().registerCallback(mFaceBookCallBack, new FacebookCallback() {            @Override            public void onSuccess(LoginResult loginResult) {//登录成功                if (loginResult != null) {                    Log.d("fackbook_login_success",loginResult.toString());                    mAccessToken = AccessToken.getCurrentAccessToken();                    Log.e("token", "token :" + mAccessToken.getToken() + "," + "user_id" + mAccessToken.getUserId());                    Manager.thirdName2=mAccessToken.getUserId();                    GraphRequest request = GraphRequest.newMeRequest(mAccessToken, new GraphRequest.GraphJSONObjectCallback() {                        @Override                        public void onCompleted(JSONObject object, GraphResponse response) {                            if (object != null) {                                String id = object.optString( "id" ) ;   //比如:1565455221565                                String name = object.optString( "name" ) ;  //比如:Zhang San                                String gender = object.optString("gender") ;  //性别:比如 male (男)  female (女)                                String emali = object.optString("email") ;  //邮箱:比如:56236545@qq.com                                //获取用户头像                                JSONObject object_pic = object.optJSONObject( "picture" ) ;                                JSONObject object_data = object_pic.optJSONObject( "data" ) ;                                String photo = object_data.optString( "url" )  ;                                //获取地域信息                                String locale = object.optString( "locale" ) ;   //zh_CN 代表中文简体                            }                        }                    }) ;                }            }            @Override            public void onCancel() {//登录取消                Log.d("fackbook_login_onCancel","onCancel");                Manager.thirdName2="1";            }            @Override            public void onError(FacebookException error) {//登录失败                Log.d("fackbook_login_onError","onError");                Manager.thirdName2="1";            }        });    }}/** * 设置登录结果回调 * * @param requestCode 请求码 * @param resultCode  结果码 * @param data        数据 */public void setOnActivityResult(int requestCode, int resultCode, Intent data) {    if (mFaceBookCallBack != null) {        mFaceBookCallBack.onActivityResult(requestCode, resultCode, data);    }}

}

8.分享新建FtShare.java
package com.ftaro.adapter;
import java.util.HashMap;

import android.app.Activity;
import android.content.Intent;
import android.net.Uri;

import cn.sharesdk.framework.Platform;
import cn.sharesdk.framework.PlatformActionListener;
import cn.sharesdk.onekeyshare.OnekeyShare;

import com.facebook.CallbackManager;
import com.facebook.FacebookCallback;
import com.facebook.FacebookException;
import com.facebook.share.Sharer;
import com.facebook.share.model.ShareLinkContent;
import com.facebook.share.widget.ShareDialog;
import com.ftaro.tool.Share;
import com.ftaro.adapter.Manager;

public class FtShare implements Share {
public String shareTitle = “”;
public String shareText = “”;
private Activity activity;
private CallbackManager callbackManager;
private ShareDialog shareDialog;
public FtShare(Activity activity) {
this.activity = activity;
}
public void setText(String title, String text) {
shareText = text;
shareTitle = title;
callbackManager = CallbackManager.Factory.create();
shareDialog = new ShareDialog(activity);
// this part is optional
shareDialog.registerCallback(callbackManager, new FacebookCallback() {
@Override
public void onSuccess(Sharer.Result result) {
//分享成功的回调,在这里做一些自己的逻辑处理
//Manager.notifyShare(0);
}
@Override
public void onCancel() {
//Manager.notifyShare(2);
}
@Override
public void onError(FacebookException error) {
//Manager.notifyShare(1);
}
});
}
public void toShare() {
////////////fackbook 分享 /////////////////////
//这里分享一个链接,更多分享配置参考官方介绍:https://developers.facebook.com/docs/sharing/android
if(ShareDialog.canShow(ShareLinkContent.class)) {
ShareLinkContent linkContent = new ShareLinkContent.Builder()
.setContentUrl(Uri.parse(“https://play.google.com/store/apps/details?id=com.sinyuee.kingwar.google”))//https://developers.facebook.com
.build();
shareDialog.show(linkContent);
}
Manager.notifyShare(0);
}
public void onActivityResult(int requestCode, int resultCode, Intent data) {
if(callbackManager!=null) {
callbackManager.onActivityResult(requestCode, resultCode, data);
}
}
}

更多相关文章

  1. Android(安卓)Studio 单独编译WebRTC的 vad 模块
  2. 用Socket实现PC和手机的文件传输
  3. Android声音焦点----从音乐回到Luncher调节音量显示的是Music的
  4. Please ensure that adb is correctly located at '/home/lq/and
  5. Android(安卓)选择文件并加载数据到界面
  6. Android(安卓)ListView长按弹出CheckBox,实现全选,反选,批量删除功
  7. Android(安卓)widget 之RemoteView
  8. Android记录2013年10月20日
  9. Android的ArrayList<String> 的用法

随机推荐

  1. Android android.uid.shared MK编译或ecl
  2. Android文件访问权限问题
  3. Android入门:SQLite
  4. Android(安卓)之ExpandableListView几个
  5. android8.1 系统应用使用FileProvider时
  6. Android 时间字符串 转成UTC时间转为指定
  7. android 模仿百度地图自定义对话框
  8. Android 菜单详解
  9. 更新进度条
  10. Android renderscript, more info' and a