Android--Facebook Login without LoginButton
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的更多相关文章
- 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 with LoginButton
1.Layout文件添加Facebook的LoginBurtton <com.facebook.widget.LoginButton android:id="@+id/authButt ...
- 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= ...
随机推荐
- Dump文件数据存储格式(一)
我们已经了解了什么是Dump文件,它保存了什么数据,有什么作用,但它是如何存储的,数据格式是怎样的呢.下面简单说一下. 一.总体结构 二.文件头 首先文件的最开始的32个字节是Dump文件的文件头,这 ...
- vigil deb 包制作
前边有写过简单rpm 包的制作,现在制作一个简单的deb 包. deb 包的制作是通过源码编译+ fpm 环境准备 rust curl https://sh.rustup.rs -sSf | sh 配 ...
- 数组(定义、遍历、冒泡排序、合并和Join 方法)
一.数组的定义 1.理解:数组指一组数据,有序的数据,可以一次性存储多个数据,将多个元素(通常统一类型)按照一定的顺序排列放到一个集合里 2.通过构造函数创建数组: var 数组名=new Arrar ...
- 【后缀数组】【LuoguP2852】 [USACO06DEC]牛奶模式Milk Patterns
题目链接 题目描述 农夫John发现他的奶牛产奶的质量一直在变动.经过细致的调查,他发现:虽然他不能预见明天产奶的质量,但连续的若干天的质量有很多重叠.我们称之为一个"模式". J ...
- C语言博客06-结构体
1.本章学习总结 1.1 学习内容总结 结构体如何定义.成员如何赋值 1.结构体的一般形式为: struct 结构体名 { 数据类型 成员名1: 数据类型 成员名2: : 数据类型 成员名n: }: ...
- 一个100%Go语言的Web-Term-SSH 堡垒机项目
SSH-Fortress 1. What does it do? Make your cluster servers be more safe by expose your SSH connectio ...
- numpy.linalg.svd函数
转载自:python之SVD函数介绍 函数:np.linalg.svd(a,full_matrices=1,compute_uv=1) 参数: a是一个形如\((M,N)\)的矩阵 full_matr ...
- #C++初学记录(STL容器以及迭代器)
STL初步 提交ACM会TLE /仅以学习STL与迭代器使用 C. Cards Sorting time limit per test1 second memory limit per test256 ...
- Servlet相关的几种乱码
1. 页面中文显示乱码 原因: response中的内容会先输入到response缓冲区,然后再输入到传给浏览器,所以要将缓冲区和浏览器的编码都设置成utf-8 1)未使用jsp,而是在servlet ...
- (二)OpenCV-Python学习—对比度增强
·对于部分图像,会出现整体较暗或较亮的情况,这是由于图片的灰度值范围较小,即对比度低.实际应用中,通过绘制图片的灰度直方图,可以很明显的判断图片的灰度值分布,区分其对比度高低.对于对比度较低的图片,可 ...