Facebook 登录接入记录
来源:互联网 发布:led彩屏控制软件 编辑:程序博客网 时间:2024/05/16 05:40
Facebook 登录接入记录
1. 注册 Facebook 账号
2. 在开发者中心创建应用
https://developers.facebook.com/
3. 接入sdk
https://developers.facebook.com/docs/android/getting-started/,较早的版本有中文
compile 'com.facebook.android:facebook-login:4.28.0'<meta-data android:name="com.facebook.sdk.ApplicationId" android:value="@string/facebook_app_id"/><activity android:name="com.facebook.FacebookActivity" android:configChanges= "keyboard|keyboardHidden|screenLayout|screenSize|orientation" android:label="@string/app_name" /><activity android:name="com.facebook.CustomTabActivity" android:exported="true"> <intent-filter> <action android:name="android.intent.action.VIEW" /> <category android:name="android.intent.category.DEFAULT" /> <category android:name="android.intent.category.BROWSABLE" /> <data android:scheme="@string/fb_login_protocol_scheme" /> </intent-filter></activity>
主要代码
先注册登录回调
LoginManager.getInstance().registerCallback(callbackManager, new FacebookCallback<LoginResult>() { @Override public void onSuccess(LoginResult loginResult) { Logger.d(loginResult.getAccessToken()); // Profile.getCurrentProfile() null } @Override public void onCancel() { // App code } @Override public void onError(FacebookException exception) { // App code } });
调用登录
Collection<String> permissions = Arrays.asList("public_profile", "email", " user_friends");LoginManager.getInstance().logInWithReadPermissions(this, permissions);
没安装应用是会自动使用网页登录
问题
1. 获取 token 后 profile 为 null
Profile 不是立即更新的,还得等他更新
@Overridepublic void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); callbackManager = CallbackManager.Factory.create(); profileTracker = new ProfileTracker() { @Override protected void onCurrentProfileChanged( Profile oldProfile, Profile currentProfile) { // App code } };}@Overrideprotected void onActivityResult(int requestCode, int resultCode, Intent data) { super.onActivityResult(requestCode, resultCode, data); callbackManager.onActivityResult(requestCode, resultCode, data);}@Overridepublic void onDestroy() { super.onDestroy(); profileTracker.stopTracking();}
放到 getToken 之后,等 profile 更新了再获取内容
2. 权限
刚注册的应用默认只有 “public_profile”, “email”, ” user_friends”, 对应的就是个人信息和好友信息
但 user_friends 只有好友数量信息而已,其他信息则需要申请额外权限,调用其他接口获取
3. 退出
LoginManager.getInstance().logOut();
4. 接口访问
sdk 并没有封装所有的接口,只提供了类似 asyncHttp 的 http 访问工具类,通过sdk只能获取基本信息,更多数据则需要自己访问接口
具体的接口信息都在 https://developers.facebook.com/docs/graph-api
比如用户好友信息
public class UserFriendsRequest { public static void makeRequest(GraphRequest.Callback callback) { String userId = Profile.getCurrentProfile().getId(); String endPoint = String.format("/%s/friends", userId); GraphRequest request = new GraphRequest( AccessToken.getCurrentAccessToken(), endPoint, null, HttpMethod.GET, callback ); request.executeAsync(); }}
然后判断错误,json 转 obj 就可以了
mCallback = new GraphRequest.Callback() { @Override public void onCompleted(GraphResponse response) { if (response.getError() == null) { UserFriendsResp userFriendsResp = parse(response.getRawResponse()); if (userFriendsResp != null) { mGetUserFriendsResponse.onCompleted(userFriendsResp); return; } } mGetUserFriendsResponse.onError(); } };
阅读全文
0 0
- Facebook 登录接入记录
- Facebook登录服务器端接入
- Android平台接入Facebook登录
- Unity 接入Facebook。登录、分享、邀请、好友列表等功能。详细记录
- FaceBook第三方登录的接入封装
- 接入google SDK登录、支付,facebook SDK登录详细教程
- 安卓接入facebook实现一键登录
- Facebook接入(旧)
- facebook SDK ios 接入
- cocos2dx接入facebook
- Facebook SDK接入备注
- Facebook ads接入
- facebook 登录
- Facebook登录
- FaceBook登录
- FaceBook登录
- Facebook接入ios,要点记录(不回调,info.plist写法等问题)
- Facebook接入(新)--iframe方式
- 普通程序员如何入门深度学习?
- Java 8的元空间
- 简单C++程序
- angularjs自定义服务
- Spring Boot系列九 spring mvc的@RequestMapping支持的方法参数类型和返回类型
- Facebook 登录接入记录
- npm和cnpm的简介
- [C语言]筛法求素数
- 网络媒体中的信息热度实时变化模式
- Eclipse svn提交代码的一般步骤(对比、解决冲突、更新、提交)
- 实战Linux Bluetooth编程(三) HCI层编程
- angualr.js+ionic踩坑记录
- 线程?对象锁?这个面试题有点意思。
- 实战Linux Bluetooth编程(四) L2CAP层编程