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= ...
随机推荐
- C++编译器和连接器原理
本文转载自新浪永远即等待的博客 几个概念: 1.编译:编译器对源文件进行编译,就是把源文件中的文本形式存在的源代码翻译成机器语言形式的目标文件的过程,在这个过程中,编译器会进行一系列的语法检查.如果 ...
- 洛谷 P4316绿豆蛙的归宿
题目描述 记f[i]表示经过i号点的概率. 那么点v从点u到达的概率=经过点u的概率/点u的出度.由于v可以由多个点走到,所以f[v]+=f[u]/out[u]. 计算f的过程可以在拓扑中完成,同时可 ...
- Calibre中使用DeDRM插件进行Kindle电子书解锁
小书匠 废话不多说,下面是Calibre和DeDRM插件的下载地址: https://calibre-ebook.com/download https://github.com/apprenticeh ...
- Go内置函数
append go语言中的append函数作用是在切片变量的后面追加新的数据,然后返回新的切片变量 func append(slice []Type, elems ...Type) []type sl ...
- avalon用background-image不起作用,怎么来选取前几个的图片进行渲染
<span ms-css="{backgroundImage: 'url('+item.image + ')'}" ms-for="($index,item) in ...
- es6学习4:async和await
async async函数返回一个 Promise 对象,可以使用then方法添加回调函数.当函数执行的时候,一旦遇到await就会先返回,等到异步操作完成,再接着执行函数体内后面的语句. funct ...
- Hadoop(四)—— MapReduce
一.Hadoop版本特性 MRv1 第一代计算框架,由编程模型和运行时环境两部分组成. 编程模型是,将数据进行map操作,然后进行reduce操作,最后将计算结果存储到HDFS中. 运行时环境是,由J ...
- mvn pom文件引用顺序关系
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/20 ...
- 网络营销CPA、CPS、CPM、CPT、CPC 是什么
网络营销之所以越来越受到重视一个主要的原因就是因为“精准”.相比较传统媒体的陈旧广告形式,网络营销能为广告主带来更为确切的效果与回报,更有传统媒体所没有的即时互动性.很多企业借助于精准的网络营销成为人 ...
- Java实现Txt转PDF文件
TxT转PDF可以直接使用IText就可以了,IText在pdf领域可以说暂时是最好的方案了.通过直接读取txt文件,然后生成pdf,再添加文本就可以了. 代码如下: public class Txt ...