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= ...
随机推荐
- fake_useragent 本地运行各种报错解决办法
- 【UVA11134】传说中的车
横纵坐标互不影响,所以问题转化到一维:在n个区间中每个区间选一个数,n个数都被选一次 将区间按右端点排序,枚举区间,每个区间选最靠左的没被选过的点 #include<algorithm> ...
- 查看服务器内存、CPU、网络等占用情况的命令--汇总
搭建测试环境过程中,需要对正在使用的aws服务器(实际这是一台虚拟出来的服务器),查看它在运行脚本,启动脚本时的内存,CPU,网络等使用情况 1.查看服务器cpu内核个数: -cat 每个物理cpu中 ...
- 怎么在浏览器设置cookie
document.cookie="jwt=xxxxxx" 遇到了一个bug 开了代理没有办法做图片上传
- 备份和还原 Linux 上的 SQL Server 数据库
备份数据库 在下面的示例sqlcmd连接到本地 SQL Server 实例,并采用完整备份的名为的用户数据库demodb. sqlcmd -S localhost -U SA -Q "BAC ...
- 在js中添加HTML类样式
有时候需要给元素添加类样式,但又要保留之前的类,可以使用element.classList.add("类名");
- 第07组 Alpha冲刺(6/6)
队名:摇光 队长:杨明哲 组长博客:求戳 作业博客:求再戳 队长:杨明哲 过去两天完成了哪些任务 文字/口头描述:博客生成的逻辑 展示GitHub当日代码/文档签入记录:(组内共用,已询问过助教小姐姐 ...
- Nodejs介绍和环境搭建
Nodejs是JavaScript的运行环境,它让 Java Script 可以开发后端程序,实现几乎其他后端 Node.js 是一个 Javascript 运行环境(runtime) 可以与 PHP ...
- Microsoft Office Excel不能访问文件*.xls的解决方案
Microsoft Office Excel不能访问文件‘xxxx.xls“可能的原因有:·文件名称或路径不存在,文件正被其他程序使用:您正要保存的工作簿与当前打开的工作簿同名. 解决方案 1.首先检 ...
- Java 8 stream 经典示例
package org.study2.java8.stream; import org.junit.Test; import java.util.*; import java.util.stream. ...