必威体育Betway必威体育官网
当前位置:首页 > IT技术

Facebook 登录接入记录

时间:2019-08-26 03:12:10来源:IT技术作者:seo实验室小编阅读:69次「手机版」
 

facebook登录

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 不是立即更新的,还得等他更新

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    callbackManager = CallbackManager.Factory.create();

    profileTracker = new ProfileTracker() {
        @Override
        protected void onCurrentProfileChanged(
                Profile oldProfile,
                Profile currentProfile) {
            // App code
        }
    };
}

@Override
protected void onActivityResult(int requestcode, int resultCode, Intent data) {
    super.onActivityResult(requestCode, resultCode, data);
    callbackManager.onActivityResult(requestCode, resultCode, data);
}

@Override
public 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();
        }
    };

相关阅读

HTML实例之小米登录页面制作

本文主要讲述HTML常用实例,如需HTML和CSS基础请到菜鸟教程自己补习。 一、最终呈现效果 二、html代码 <p class="login">

苹果撤销fb证书是怎么回事?facebook违反了什么协议?

A5创业网(公众号:iadmin5)1月31日消息,据外媒报道,苹果公司已经通过撤销Facebook的企业开发者证书来阻止其使用其Research应用程序。

Gmail 登录方法

Gmail 登录方法首先是在电脑上登录如果你是安卓手机的话,如果你是Ipad 的话 & 并且你想用自带的软件来管理的话首先是在电脑上登录

origin橘子登录不了怎么办 origin橘子平台无法登陆解

EA的软件橘子有时候会出现一些小状况,无法登录。遇到这种情况该怎么解决呢?快来看看吧!具体方法:找到屏幕右下角的网络,点击鼠标右键,点

Facebook、Dropbox、HubSpot都是如何计算获客成本的?

CAC包含很多因素,它的计算公式并不是一个简单万能、放之四海而皆准的万灵药。在影响公司估值的所有因素中,最常用的两个指标就是CAC

分享到:

栏目导航

推荐阅读

热门阅读