Android--Facebook Login with LoginButton
1、Layout文件添加Facebook的LoginBurtton
<com.facebook.widget.LoginButton
android:id="@+id/authButton"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:layout_marginLeft="45dp"
android:layout_marginRight="45dp"
android:layout_marginTop="10dp"
android:background="#FF3B5790" />
2、 创建MainFragment 类,并且继承Fragment 类,
重写onCreateView()方法 ;通过LoginButton设置权限 setReadPermissions() 更多权限访问 http://developers.facebook.com/docs/reference/login/#permissions
重写 onSessionStateChange()方法 ,作用:当session状态改变时调用该方法,state.isOpened() 为 true 时,则证明登录成功
private UiLifecycleHelper uiHelper;
private LoginButton authButton; @Override
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
uiHelper = new UiLifecycleHelper(getActivity(), callback);
uiHelper.onCreate(savedInstanceState);
authButton = (LoginButton) view.findViewById(R.id.authButton);
authButton.setFragment(this);
authButton.setLoginBehavior(SessionLoginBehavior.SUPPRESS_SSO);
authButton.setReadPermissions(Arrays.asList("email", "user_likes", "user_status"));
} @Override
public void onResume()
{
super.onResume();
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); } @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())
{ loginByFacebookFinished(session); }
else if (state.isClosed())
{
}
} /**
*登陆成功
**/
private void loginByFacebookFinished(final Session session)
{
Request request = Request.newMeRequest(session, new GraphUserCallback()
{ @Override
public void onCompleted(GraphUser user, Response response)
{
dismissLoadingDlg();
try
{
AccountInfo accountInfo = null;
accountInfo = new AccountInfo();
accountInfo.setVip(false);
accountInfo.setHasLogin(true);
accountInfo.setToken(session.getAccessToken());
//用户信息
if (user != null)
{
accountInfo.setShowUserName(user.getName());
accountInfo.setPassword(user.getLink());
accountInfo.setLoginType(LoginType.FACEBOOK);
accountInfo.setEmail(user.getProperty("email") + "");
accountInfo.setLoginName(user.getProperty("name") + "");
}
}
catch (Exception e)
{
// TODO Auto-generated catch block
e.printStackTrace();
} } });
request.executeAsync(); }
3、退出登录
/**
* Logout From Facebook
*/
public void callFacebookLogout(Context context) {
Session session = Session.getActiveSession();
if (session != null) { if (!session.isClosed()) {
session.closeAndClearTokenInformation();
//clear your preferences if saved
}
} else { session = new Session(context);
Session.setActiveSession(session); session.closeAndClearTokenInformation();
//clear your preferences if saved
} }
Android--Facebook Login with LoginButton的更多相关文章
- Android Facebook和Twitter登录和分享完整版
最近公司的软件需要改国际版,需要Facebook和Twitter的登录和分享. 本人先用Umeng的第三方社会化分享实现了该功能,但是后来一想问题来了,经过查证.Umeng只在中国和美国有服务器,那也 ...
- SDK接入(1)之Android Facebook SDK接入
SDK接入(1)之Android Facebook SDK接入 由于游戏已上线,且处于维护阶段,所以有空写写各种SDK接入过程和遇到的问题,也当作一种工作总结.SDK接入主流分为这么几类,登录.支付. ...
- Android Facebook和Twitter分享
1. 背景 在年初的时候,公司的项目有个新的需求,在英文版的应用中加入Facebook和Twitter分享功能. 2. 完成情况 由于这个项目比较急,所以开发这个功能从预研到接入总共耗时一周.后来,在 ...
- issues about Facebook Login
在学习The complete iOS 9 Developer Course - Build 18 Apps 中的Letture134-Facebook Login,需要整合(integrate)Pa ...
- Android--Facebook Login without LoginButton
1.引入facebook 工程lib,在Manifest中声明com.facebook.LoginActivity,facebook_app_id <activity android:name= ...
- Android - Facebook KeyHash 設定
转自:http://www.dotblogs.com.tw/newmonkey48/archive/2014/04/17/144779.aspx App要使用Facebook 分享時,設要在Faceb ...
- Android Facebook分享功能实现
1.下载 Facebook SDK https://developers.facebook.com/docs/Android?locale=zh_CN 2.在facebook下设置app的相关信息 3 ...
- facebook login issue
If enable the facebook account in settings, when change account can't open the session. -(void)fbRes ...
- Google Play sign sha1 转 Facebook login 需要的 hashkey
:4E:::::3A:1F::A6:0F:F6:A1:C2::E5::::2E | xxd -r -p | openssl base64 输出 M05IhBlQOh9jpg/2ocIx5QE4VS4= ...
随机推荐
- HTML5 文件读取
一.定义 input的file类型会渲染为一个按钮和一段文字.点击按钮可打开文件选择窗口,文字表示对文件的描述(大部分情况下为文件名):file类型的input会有files属性,保存着文件的相关信息 ...
- 2019SDSC夏令营游记
Day 1 2019.7.22 晴 第一天夏令营,是在一所大学举办的. 到之前的我好兴奋,要提前看一下大学到底是什么样的. 聊了一上午的天 坐了一上午的公交终于到了目的地,下午很自由,自己在宿舍里面休 ...
- manjaro web
https://wiki.manjaro.org/index.php?title=Main_Page https://forum.manjaro.org/ https://gitlab.manjaro ...
- Linux crontab命令:循环执行定时任务(详解版)
前面学习了 at 命令,此命令在指定的时间仅能执行一次任务,但在实际工作中,系统的定时任务一般是需要重复执行的.而 at 命令显然无法满足需求,这是就需要使用 crontab 命令来执行循环定时任务. ...
- msyql8.0编译安装
1.安装依赖 yum -y install wget cmake gcc gcc-c++ncurses ncurses-devel libaio-devel openssl openssl-d ...
- vscode前端插件(我的标配)
前言 今天给我的vscode编辑汉化了一下)我也不知道为什么要汉化一下... 但是汉化后 我的vue文件木有高亮了,2333(只好一顿操作 再安装插件 还要去百度找 自己留存) 汉化后 是所有的插件都 ...
- pyqt5设置背景图片出现问题
在使用pyqt5时,用qtdesign设置好背景图片,如何设置自行百度,预览没问题,用ptuic5转换为代码却发现显示不了: 首先:我在qtdesign中导入的是pic.qrc,但是转换的代码最后一句 ...
- Redis4.0新特性(一)-Memory Command
Redis4.0版本增加了很多诱人的新特性,在redis精细化运营管理中都非常有用(猜想和antirez加入redislabs有很大关系):此系列几篇水文主要介绍以下几个新特性的使用和效果. Redi ...
- ASP.NET与非托管DLL的那些事儿【转+增】
https://www.cnblogs.com/yeahgis/archive/2011/11/12/2246341.html ASP.NET与非托管DLL的那些事儿 环境VS2010 语言:ISO ...
- axios 文件下载代码 片段
<script type="text/javascript"> axios({ method:'post', url: 'url', // 最好qs.stringify ...