精华内容
下载资源
问答
  • facebook登录
    千次阅读
    2021-10-28 16:40:30

    Facebook登陆问题和在Android 11 上的问题

    接入Facebook android 版本的登陆, 遇到了很多问题, 在 Android 11 上登陆不上去。 android 11 以下都没有问题。

    Facebook新的改变

    在这里插入图片描述
    Facebook sdk 版本
    在这里插入图片描述
    Facebook sdk 库 具体怎么使用想

    更多相关内容
  • facebook登陆

    2018-06-27 17:59:57
    实现android系统下的facebook登陆功能,以及一些其余信息。
  • 2、登录https://developers.facebook.com/ 利用你的facebook账号登录进去,你才是一个开发者。得有这个权限,才能开发第三方登录。 3、点击我的应用 4、创建一个属于自己的应用 5、选择类型和详情 6、...

    配置

    1、注册一个facebook的账号

    你得有一个facebook的账号,然后才能成为facebook的开发者。

    2、登录https://developers.facebook.com/

    利用你的facebook账号登录进去,你才是一个开发者。得有这个权限,才能开发第三方登录。

    3、点击我的应用

    4、创建一个属于自己的应用

    5、选择类型和详情

    6、回到我的应用界面上

    就可以看到刚刚创建的应用了。

    7、点击应用名字,查看详情

    要记下来你的client_id 和 client_secret!

    8、记录facebook登录的设置

    比如你的网域是:https://.aliyuncs.com/

    有效Oauth跳转的uri就必须是:https://.aliyuncs.com/path

    9、应用权限审核

    这个的作用,就是告诉facebook你要使用到用户的哪些数据,比如,email,和 public_profile。这两个是可以直接通过的,就是由一般访问权提升为高级访问权。已经申请的话会看到前面访问登记是绿色的,就是高级访问权了了。

    其他的权限,申请了就要facebook审批,审批的周期一般是七天。

    在第六步,有个数据使用情况检查,就是你要在指定的某个时间段之前向facebook做你要使用这些数据的说明,还有承诺合理使用你已经获得通过的数据权限,合理使用用户的数据。

    10、一些基本的准备

    以上,就是你要开发第三方路所要准备的东西,开发的都必须要走https,http不行的。如果没有这种https域名的,建议可以学习一下使用 ngrok。这个是一个内网穿透的工具,可以临时使得你的内网和变成可以访问的外网。

    APP登陆

    /**
         * app端授权,php登陆
         * composer require facebook/graph-sdk
         * @Author wzb
         * @Date 2022/4/23 12:05
         */
        public function facebook()
        {
            $access_token = $this->request->param('access_token', '', 'trim');
            if (!$access_token) {
                exit('服务器错误');
            }
            $fb = new Facebook([
                'app_id' => '你的应用编号',
                'app_secret' => '你的秘钥',
                'default_graph_version' => 'v2.10',
            ]);
    
            $facebook_user = [];
            $avatar_url = '';
            try {
                $response = $fb->get(
                    '/me',
                    $access_token
                );
                $facebook_user = $response->getDecodedBody();
                if (!isset($facebook_user['id'])) {
                    exit('获取Facebook信息失败');
                }
                //获取用户头像
                $response = $fb->get(
                    "/{$facebook_user['id']}/picture?type=large&redirect=false",
                    $access_token
                );
                $facebook_user_avatar = $response->getDecodedBody();
                if (isset($facebook_user_avatar['data']['url'])) {
                    $avatar_url = $facebook_user_avatar['data']['url']; // 获取头像
                }
            } catch (\Exception $e) {
                exit('系统繁忙,请稍后再试');
            }
            $fbUid = $facebook_user['id'] ?? ''; // fb_uid
            $nickname = $facebook_user['name']; // 呢称
            //2.拿到用户信息进行用户登录or用户创建流程
    
        }
     
    

    Web 端登陆流程

    php 登陆流程

    1、进入Facebook登录-》设置 来设置允许的回调地址2、下载SDK:GitHub - facebookarchive/php-graph-sdk: The Facebook SDK for PHP provides a native interface to the Graph API and Facebook Login. https://developers.facebook.com/docs/php

    	 /**
         * facebook登陆
         * 下载SDK:https://github.com/facebookarchive/php-graph-sdk
         * @Author wzb
         * @Date 2022/4/23 11:53
         */
        function facebook_login(){
            session_start();
            $fb = new \Facebook\Facebook([
                'app_id' => '你的应用编号',
                'app_secret' => '你的秘钥',
                'default_graph_version' => 'v3.2',
            ]);
            $helper = $fb->getRedirectLoginHelper();
            $permissions = ['email']; // Optional permissions
            $redirect_uri = 'https://m.remixg.com/Login/face_login'; // 授权地址必须要填写跟这个一样
            $loginUrl = $helper->getLoginUrl($redirect_uri, $permissions);
            echo '<a href="' . htmlspecialchars($loginUrl) . '">Log in with Facebook!</a>';
        }
    
        /**
         * facebook登陆回调
         * @Author wzb
         * @Date 2022/4/23 11:53
         */
        function face_login(){
            session_start();
            $fb = new \Facebook\Facebook([
               'app_id' => '你的应用编号',
                'app_secret' => '你的秘钥',
                'default_graph_version' => 'v3.2',
            ]);
    
            $helper = $fb->getRedirectLoginHelper();
    
            try {
                $accessToken = $helper->getAccessToken();
            } catch (Facebook\Exceptions\FacebookResponseException $e) {
                echo 'Graph returned an error: ' . $e->getMessage();
                exit;
            } catch (Facebook\Exceptions\FacebookSDKException $e) {
                // When validation fails or other local issues
                echo 'Facebook SDK returned an error: ' . $e->getMessage();
                exit;
            }
            if (!isset($accessToken)) {
                if ($helper->getError()) {
                    header('HTTP/1.0 401 Unauthorized');
                    echo "Error: " . $helper->getError() . "\n";
                    echo "Error Code: " . $helper->getErrorCode() . "\n";
                    echo "Error Reason: " . $helper->getErrorReason() . "\n";
                    echo "Error Description: " . $helper->getErrorDescription() . "\n";
                } else {
                    header('HTTP/1.0 400 Bad Request');
                    echo 'Bad request';
                }
                exit;
            }
            // 获取 accessToken
            $oAuth2Client = $fb->getOAuth2Client();
            // 获取 userid
            $tokenMetadata = $oAuth2Client->debugToken($accessToken);
            // 获取用户信息
            $userinfo = $fb->get($tokenMetadata->getUserId() . '?fields=id,name,first_name,picture', $accessToken->getValue());
            $userinfo = json_decode($userinfo->getBody(), true);
            // 执行注册
    
        }
    

     js 登陆流程

    /**
     * facebook js login
     */
    function login_facebook(){
        FB.getLoginStatus(function(response) {
            console.log(response);
            if (response.status === 'connected') {
                FB.api('/me', {fields: 'id,name,first_name,picture.width(120).height(120)'},function(res) {
                    var facebook_login_data = {id:res.id,name:res.name,picture:res.picture.data.url};
                    // 传给后台处理注册登录
                    $.ajax({
                        type:'POST',
                        url:"后端接口",
                        data:facebook_login_data,
                        success:function(data){
                            $('#url').html(data);
                        }
                    });
                });
            }else{
                FB.login(function(response) {
                    if (response.status === 'connected') {
                        FB.api('/me', {fields: 'id,name,first_name,picture.width(120).height(120)'},function(res) {
                            var facebook_login_data = {id:res.id,name:res.name,picture:res.picture.data.url};
                            // 传给后台处理注册登录
                            $.ajax({
                                type:'POST',
                                url:"后端接口",
                                data:facebook_login_data,
                                success:function(data){
                                    $('#url').html(data);
                                }
                            });
                        });
                    } else {
                        console.log('该用户没有登录');
                    }
                }, {scope: 'public_profile,email'});
            }
        });
    }
    
    (function(d, s, id) {
    	var js, fjs = d.getElementsByTagName(s)[0];
    	if (d.getElementById(id)) return;
    	js = d.createElement(s); js.id = id;
    	js.src = "https://connect.facebook.net/en_US/sdk.js";
    	fjs.parentNode.insertBefore(js, fjs);
    }(document, 'script', 'facebook-jssdk'));
    window.fbAsyncInit = function() {
    	FB.init({
    		appId      : '你的应用编号',
    		cookie     : true,  // 启用cookie
    		xfbml      : true,  // 解析此页面上的社交插件
    		version    : 'v3.2' // 使用图形api v3.2版本
    	});
    };
    

    展开全文
  • android接入facebook登陆

    2021-10-08 18:42:52
    facebook后台添加Android平台的时候需要输入三个信息 1.密钥散列 2.软件包名称 3.类名 密钥散列获取方法 方法1: 通过代码运行起来就可以获取 private void getKeyHashValue() { try { PackageInfo info = this....

    facebook后台添加Android平台的时候需要输入三个信息

    1.密钥散列
    2.软件包名称
    3.类名
    在这里插入图片描述

    密钥散列获取方法

    方法1:

    通过代码运行起来就可以获取

    private void getKeyHashValue() {
        try {
            PackageInfo info = this.activity.getPackageManager().getPackageInfo(bundleId, PackageManager.GET_SIGNATURES);
            for (Signature signature : info.signatures) {
                MessageDigest md = MessageDigest.getInstance("SHA");
                md.update(signature.toByteArray());
                Log.d(TAG,"KEYHASH -> " + Base64.encodeToString(md.digest(), Base64.DEFAULT));
            }
        } catch (PackageManager.NameNotFoundException e) {
            Log.d(TAG, "error1:" + e.toString());
        } catch (NoSuchAlgorithmException e) {
            Log.d(TAG, "error2:" + e.toString());
        }
    }
    

    运行后,控制台输出信息如下
    在这里插入图片描述

    方法2:

    通过命令行形式获取

    keytool -exportcert -alias release -keystore D:\work\Client\AndroidKey\release.keystore | D:\openssl\bin\openssl.exe sha1 -binary | D:\openssl\bin\openssl.exe base64
    

    运行后,控制台输出信息如下
    在这里插入图片描述

    总结

    通过方法1和方法2可以看出这两种方式获取的密钥散列是相同的,已经接过了一次facebook登陆,过了一阵子再接一次的时候,看到后台添加android平台的时候需要密钥散列,还是一脸懵逼,又回去鼓秋了一通好浪费时间

    补充

    我的签名信息,保存在gradle.properties文件中,操作的时候把路径换成自己机器的对应路径,密钥文件名,别名,口令换成自己的就好了,注意通过命令行获取密钥散列的时候需要keytool和openssl,一般机器上都会装,我的路径如下
    C:\Program Files\Android\Android Studio\jre\bin\keytool.exe
    D:\openssl\bin\openssl.exe

    RELEASE_STORE_FILE=D:/work/Client/AndroidKey/release.keystore
    RELEASE_STORE_PASSWORD=123456
    RELEASE_KEY_ALIAS=release
    RELEASE_KEY_PASSWORD=123456
    
    展开全文
  • facebook登陆授权 服务器接入记录

    千次阅读 2022-01-17 17:36:22
    1:client 接入facebook的sdk后,登陆时app拉起facebook的授权页面,等用户授权登陆后,app通过sdk能拿到当前用户的facebook id和token,app把这个id和token发送给服务器,服务器再验证。这个过程跟微信登陆很类似,...

    官方文档:http://developers.facebook.com/docs/reference/api/

    1:client 接入facebook的sdk后,登陆时app拉起facebook的授权页面,等用户授权登陆后,app通过sdk能拿到当前用户的accessToken和userID,app把这个id和token发送给服务器,服务器再验证。这个过程跟微信登陆很类似,微信是拉起微信客户端获取wxcode

    2:服务器收到client app 发来的id和token,然后去facebook的后台验证,api如下

    https://graph.facebook.com/debug_token?access_token={App-token}&input_token={User-token}

    User-token为用户的token,App-token为APP的token,值为 {Your AppId}|{Your AppSecret},| urlencode 后变成了 %7C 

    #coding:utf-8
    '''
    create on 2017-05-31
    
    @author: sandy
    '''
    
    import urllib.parse
    url = "https://graph.facebook.com/debug_token?access_token={0}&input_token={1}"
    app_token = "%s|%s" % ("AppId","AppSecret")
    user_token = "accessToken"
    url = url.format(app_token,user_token)
    print(urllib.parse.quote(url))
    # print(urllib.parse.urlencode({"access_token":app_token,"input_token":user_token}))

     urllib.parse.urlencode 参数要求是 dic

    服务器去facebook后台验证成功后返回的结果如下:

    {
        "data": {
            "app_id": 000000000000000,
            "expires_at": 1352419328, 
            "is_valid": true, 
            "issued_at": 1347235328, 
            "scopes": [
                "email", 
                "publish_actions"
            ], 
            "user_id": 100207059
        }
    }

    服务器逻辑层面 先验证HTTP code==200,然后再验证返回的json中is_valid 是不是 true,最后对比 user_id 和 步骤1 client传来的fb_id 是不是一致

    关于这个fb_id 进一步说明

    客户端获取到的账号id 实际上不是用户的真正的facebook id,而是facebook账号在该应用下的openid,这个openid 只适用于当前的应用!!!类似微信的openid

    账号id 是一个纯数字的字符串。

     如果是MySQL,可以用无符号的bigint表示

    3:获取用户的信息

    登陆成功后,如果需要用户的一些基本信息比如昵称、性别、好友等等,就需要继续请求facebook的相关接口

    https://graph.facebook.com/{user-id}?access_token={token}

    以上,token可以有两种形式:

    1、用户账号token,形式为:{User-token}

    2、APP token,形式为:{Your AppID}%7C{Your AppSecret}

    前面这个接口等同于 /me?access_token={User-Token}, 默认只返回 id,name ,如果想要更多用户数据,就要以下面的方式查询了
    /{user-id}?fields=id,name,gender,friends&access_token={User-Token},

    或 /me?fields=id,name,gender,friends&access_token={User-Token}

    展开全文
  • facebook登陆接入

    千次阅读 2020-07-18 17:44:42
    因上周公司在做海外项目,需要接入facebook,目前完成了登陆接入,现在写出来,方便大家。 1.FaceBook开发者设置: https://developers.facebook.com/docs/facebook-login/android/ 网址需要翻,所以先做好准备。...
  • 1.在测试者面板,点击添加测试者,添加完毕之后,成员状态为待回复 2.用被邀请的人账号登陆developer.facebook.com,会看到邀请提示,点进入确认,就完成了邀请流程
  • Facebook登陆SDK接入(Android)

    千次阅读 2020-02-29 20:36:08
    1】第一个问题玩家无法登陆Facebook账号,在生成散列中已经说明了。 2】如果提示:“xxxxxxxFacebook-login 5.9.0 in AndroidManifest”,就把清单中的FacebookActivity注释掉。 3】编译过程遇到的问题可在其他...
  • 上线google play一般都会集成第三方facebook登陆,google登陆和google支付功能,下面我们就来详细介绍每个功能是如何实现的。 一.首先我们来看看facebook登陆实现: 输入如下网站进入facebook开发者平台:...
  • facebook 登陆失败 分享失败 原因汇总

    千次阅读 2021-03-26 10:12:41
    请看商城样例 按照正常开发,秘钥生成是完全没有问题的 但是我们上传到谷歌后,谷歌发布的包秘钥会发生变化(下载下来后查看打印信息),请把变化后的秘钥更新到facebook控制台,问题解决 ...
  • FB登陆错误 Invalid Scopes: user_status. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: ...
  • Facebook登陆时遇到的问题

    千次阅读 2020-07-02 14:31:23
    } } catch (Exception e) { } https://developers.facebook.com/docs/facebook-login/android/ 上线后: 1、打开https://play.google.com/apps/publish 2、版本管理-应用签名 把sha-1的内容放到...
  • web开发第三方登陆之facebook登陆

    千次阅读 2017-08-12 09:48:17
    1,在facebook开放平台https://developers.facebook.com创建一个项目,获取项目应用编号和应用密钥 在设置中配置其他信息 2,编码function statusChangeCallback(response) { console.log('statusChangeCal
  • 本系列文章介绍UWP开发win10应用中使用Windows SDK for Facebook进行登陆、获取用户信息、分享信息等操作的方法,而不是使用FaceBook .NET SDK进行开发。 获取SID并创建Facebook应用 Facebook使用SID作为RedirectUrI...
  • facebook登陆按钮by Ben Regenspan 通过本·雷根斯潘 为什么Facebook Like按钮占平均网站代码的16% (Why Facebook Like buttons account for 16% of an average website’s code) According to data collected by...
  • iOS 集成Facebook登陆

    2021-08-11 14:52:06
    注意事项 1.运行的时候崩溃,提示没有找到FB SDK,解决办法是Build Phases,+,New Copy File Phase,然后把FB的SDK添加进来 2.编译错误 Building for iOS, but the linked and embedded framework ‘FBSDKCoreKit....
  • 大致步骤是: 1、创建一个应用程序,可以获得App ...https://www.facebook.com/dialog/oauth?client_id=YOUR_APP_ID&amp;redirect_uri=YOUR_URL&amp;scope=email,read_stream 其中YOUR_APP_ID就是你的APPID...
  • 需求是在 Vue 项目上同时接入 Google 登陆Facebook 登陆。查阅文档发现 firebase 提供了,Google 和 Facebook 等多家联合验证方式。也就是最终拿到各个平台等 token 之后都要再通过 firebase 做最后的验证,生产 ...
  • 选择将平台外游戏关联Facebook登陆 填写应用名称 添加平台,选择ios 填写Bundle ID后,点击快速入门 查看集成文档 根据集成文档说明 1: 下载Facebook SDK,实践中发现,通过“下载SDK”按钮下载的SDK版本有些老...
  • Facebook三方登陆流程

    千次阅读 2021-03-09 09:24:46
    Facebook三方登陆流程 准备工作 注册一个facebook账号(注册流程就不说了,需要科学上网) 正篇 进入Facebook Developer官方网站,登录Facebook账号 ps:如果第一次登陆进来图中框起来的地方是**“新手xx”**...
  • 本教程教您如何用自定义UI为自己APP应用应用Facebook登陆功能,以及登陆和注销的控制。这样,您就可以看上去感觉是在自己的应用里操作,给用户统一的用户体验。 To implement this login, we will use one of the ...
  • Android Facebook登陆获取 Key Hashes值

    千次阅读 2020-04-06 15:34:04
    方式一: 代码生成 import android.content.Context; import android.content.pm.PackageInfo; import android.content.pm.PackageManager; import android.content.pm.Signature; import android.util.Base64;...
  • 这里帖几个有解决问题指导方向的连接...facebook 关于Login Error: There is an error in logging you into this application. Please try again later. 的讨论帖子 总结一下就是facebook sdk的bug,需要你更新一下hash
  • 网页版Facebook第三方登陆

    千次阅读 2020-03-19 19:41:59
    网页版Facebook登陆 facebook上面,提供的三方接口很多,但是文档内容都是东拼西凑的,看起来太麻烦,没有一个能立马实现的demo,自己写的网站用了facebook登陆,在这里做一个总结。 ①登陆上你的facebook,前提你...
  • hellojs实现google+facebook登陆 传送门:hellojs in npm
  • Facebook和谷歌登陆插件

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 12,580
精华内容 5,032
关键字:

facebook登录