1.引入facebook 工程lib,在Manifest中声明com.facebook.LoginActivity,facebook_app_id

<activity
android:name="com.facebook.LoginActivity"
android:label="@string/app_name"
android:theme="@android:style/Theme.Translucent.NoTitleBar" /> <meta-data
android:name="com.facebook.sdk.ApplicationId"
android:value="@string/facebook_app_id" />

2.调用方式:

1).初始化facebookLogin,设置回调

private FacebookLogin facebookLogin;
facebookLogin = new FacebookLogin(this);
facebookLogin.setLoginCallBack(new FacebookLogin.LoginCallBack()
{
@Override
public void onPreLogin()
{
showLoadingDlg();
} @Override
public void onLoginSuccess(GraphUser user)
{ dismissLoadingDlg();
Toast.makeText(getApplicationContext(), user.getName()+"========", Toast.LENGTH_LONG).show();
} @Override
public void onError()
{
dismissLoadingDlg();
}
});

2).重写onActivityResult方法

 @Override
public void onActivityResult(int requestCode, int resultCode, Intent data)
{
super.onActivityResult(requestCode, resultCode, data);
facebookLogin.onActivityResult(requestCode, resultCode, data);
}

3).调用facebookLogin.login()方法,登录成功后会调用onLoginSuccess方法返回用户信息user

facebookLogin.login(); 

3.工具类FacebookLogin.java代码:

import android.app.Activity;
import android.content.Context;
import android.content.Intent;
import com.facebook.Request;
import com.facebook.Response;
import com.facebook.Session;
import com.facebook.SessionState;
import com.facebook.Request.GraphUserCallback;
import com.facebook.model.GraphUser; public class FacebookLogin
{
private Activity activity; public FacebookLogin(Activity activity)
{
this.activity = activity;
} private LoginCallBack loginCallBack; public void onActivityResult(int requestCode, int resultCode, Intent data)
{
onActivityResult(activity, requestCode, resultCode, data);
} /**
* Login
*/
public void login()
{
login(activity);
} /**
* onActivityResult
* @param context
* @param requestCode
* @param resultCode
* @param data
*/
private void onActivityResult(Context context, int requestCode, int resultCode, Intent data)
{
if (context instanceof Activity)
{
Session.getActiveSession().onActivityResult((Activity) context, requestCode, resultCode, data);
}
} /**
* Login
* @param context
*/
private void login(Context context)
{
Session.openActiveSession((Activity) context, true, new Session.StatusCallback()
{
// callback when session changes state
@Override
public void call(Session session, SessionState state, Exception exception)
{
if (session.isOpened())
{
getUserInfo(session);
}
} });
if (loginCallBack != null)
{
loginCallBack.onPreLogin();
}
} private void getUserInfo(final Session session)
{
Request request = Request.newMeRequest(session, new GraphUserCallback()
{ @Override
public void onCompleted(GraphUser user, Response response)
{
try
{
if (loginCallBack != null)
{
if (user != null)
{ loginCallBack.onLoginSuccess(user);
}
else
{
loginCallBack.onError();
}
}
}
catch (Exception e)
{
e.printStackTrace();
loginCallBack.onError();
} } });
request.executeAsync();
} /**
* Logout from Facebook
*/
public void logout()
{
Session session = Session.getActiveSession();
if (session != null)
{
if (!session.isClosed())
{
session.closeAndClearTokenInformation();
}
}
else
{
session = new Session(activity);
Session.setActiveSession(session);
session.closeAndClearTokenInformation();
} } public void setLoginCallBack(LoginCallBack loginCallBack)
{
this.loginCallBack = loginCallBack;
} public interface LoginCallBack
{
void onPreLogin(); void onLoginSuccess(GraphUser user); void onError();
}
}

  

Android--Facebook Login without LoginButton的更多相关文章

  1. Android Facebook和Twitter登录和分享完整版

    最近公司的软件需要改国际版,需要Facebook和Twitter的登录和分享. 本人先用Umeng的第三方社会化分享实现了该功能,但是后来一想问题来了,经过查证.Umeng只在中国和美国有服务器,那也 ...

  2. SDK接入(1)之Android Facebook SDK接入

    SDK接入(1)之Android Facebook SDK接入 由于游戏已上线,且处于维护阶段,所以有空写写各种SDK接入过程和遇到的问题,也当作一种工作总结.SDK接入主流分为这么几类,登录.支付. ...

  3. Android Facebook和Twitter分享

    1. 背景 在年初的时候,公司的项目有个新的需求,在英文版的应用中加入Facebook和Twitter分享功能. 2. 完成情况 由于这个项目比较急,所以开发这个功能从预研到接入总共耗时一周.后来,在 ...

  4. issues about Facebook Login

    在学习The complete iOS 9 Developer Course - Build 18 Apps 中的Letture134-Facebook Login,需要整合(integrate)Pa ...

  5. Android--Facebook Login with LoginButton

    1.Layout文件添加Facebook的LoginBurtton <com.facebook.widget.LoginButton android:id="@+id/authButt ...

  6. Android - Facebook KeyHash 設定

    转自:http://www.dotblogs.com.tw/newmonkey48/archive/2014/04/17/144779.aspx App要使用Facebook 分享時,設要在Faceb ...

  7. Android Facebook分享功能实现

    1.下载 Facebook SDK https://developers.facebook.com/docs/Android?locale=zh_CN 2.在facebook下设置app的相关信息 3 ...

  8. facebook login issue

    If enable the facebook account in settings, when change account can't open the session. -(void)fbRes ...

  9. Google Play sign sha1 转 Facebook login 需要的 hashkey

    :4E:::::3A:1F::A6:0F:F6:A1:C2::E5::::2E | xxd -r -p | openssl base64 输出 M05IhBlQOh9jpg/2ocIx5QE4VS4= ...

随机推荐

  1. WinDbg常用命令系列---单步执行p*

    p (Step) p命令执行单个指令或源代码行,并可选地显示所有寄存器和标志的结果值.当子例程调用或中断发生时,它们被视为单个步骤. 用户模式: [~Thread] p[r] [= StartAddr ...

  2. C博客作业01——分支,顺序结构

    C博客作业01--分支,顺序结构 0.展示PTA总分 1本章学习内容 1.1学习内容总结 1)格式化输出函数printf(),scanf(). 它是什么? 对于初学者而言,一开始了解接触它们,只是被硬 ...

  3. outlook 修改视图

  4. 「ZJOI2019」语言

    传送门 Description 给定一棵\(n\)个点的树和\(m\)条链,两个点可以联会当且仅当它们同在某一条链上,求可以联会的点的方案数 \(n,m\leq10^5\) Solution  考虑计 ...

  5. Java中定义不了可变长数组怎么办---集合 泛型

    一.集合(Collections) Java使用集合来组织和管理对象. 1.Java的集合类 集合类主要负责保存.盛装和管理对象,因此集合类也被称为容器类. 集合类分为Set.List.Map和Que ...

  6. HttpClient介绍和简单使用流程

    HttpClient SpringCloud中服务和服务之间的调用全部是使用HttpClient,还有前面使用SolrJ中就封装了HttpClient,在调用SolrTemplate的saveBean ...

  7. 14、Docker监控方案(Prometheus+cAdvisor+Grafana)

    上一篇文章我们已经学习了比较流行的cAdvisor+InfluxDB+Grafana组合进行Docker监控.这节课来学习Prometheus+cAdvisor+Grafana组合. cAdvisor ...

  8. 还在用难用的AssetBundle?快来运用Unity新的可寻址资源系统,助力游戏开发

    Unity Addressables可寻址资源系统是一个强大的Unity资源包,它能够帮助解决游戏开发中最重要的一些挑战:高效率和轻松的内容管理. 在管理游戏资源时,往往很难维持好的标准,从而避免让项 ...

  9. RPC接口测试(三) RPC接口测试

    RPC接口测试 接口测试主要分HTTP和RPC两类,RPC类型里面以Dubbo较为知名.互联网微服务架构,两种接口都需要做接口测试的,不管是业务测试还是回归测试: Dubbo:Java栈的互联网公司比 ...

  10. Oracle系列七 子查询

    子查询语法 SELECT select_list FROM table WHERE expr operator (SELECT select_list FROM table); 子查询 (内查询) 在 ...