Facebook第三方登录(JavaScript SDK)

利用 JavaScript SDK 部署网页版“Facebook 登录”  官方文档


详细demo下载

本demo示例利用JavaScript SDK实现了Facebook、google、LinkedIn第三方登录,可以获取用户的基本信息,并且同时包括官方登录按钮和自定义登录按钮代码示例。


1.选择您的应用设置

应用面板中选择您的应用。然后选择是否允许通过邮箱和短信登录,并为您的应用选择安全设置。有关选择访问口令设置的详细信息,请参阅访问口令,有关选择应用密钥设置的信息,请参阅使用图谱 API

2.输入跳转网址

应用面板中选择您的应用,然后前往产品 > Facebook 登录 > 设置。在 OAuth 客户端授权设置下的有效 OAuth 跳转网址字段中输入您的跳转网址以获得成功授权。


3.检查登录状态

首先加载Facebook SDK
(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      : '1234567890',
		cookie     : true,  // 启用cookie
		xfbml      : true,  // 解析此页面上的社交插件
		version    : 'v2.8' // 使用图形api 2.8版本
	});
};

appId就是创建的应用的应用编号

加载网页时应采取的第一步是检查用户是否已使用 Facebook 登录功能登录您的应用。 调用 FB.getLoginStatus即可开始此流程。 此函数会触发 Facebook 调用,获取登录状态,并调用包含结果的回调函数。

FB.getLoginStatus(function(response) {
    statusChangeCallback(response);
});

提供给回调的 response 对象包括许多字段:

{
    status: 'connected',
    authResponse: {
        accessToken: '...',
        expiresIn:'...',
        signedRequest:'...',
        userID:'...'
    }
}

status 表示应用用户的登录状态。状态可以是以下某个值:

  • connected。用户登录了 Facebook 和您的应用。
  • not_authorized。用户登录了 Facebook,但未登录您的应用。
  • unknown。用户未登录 Facebook,所以无法知道他们是否登录了您的应用。或者已经调用  FB.logout(),因此无法连接至 Facebook。
  • 如果状态为  authResponse,则响应对象将包括  connected,分为以下部分:
  • accessToken。包括应用用户的访问口令。
  • expiresIn。表示口令到期且需要更新的 UNIX 时间。
  • signedRequest。经签名的参数,其中包括应用用户的信息。
  • userID 是应用用户的编号。

4.让用户登录

这里只写自定义登录按钮,如需使用官方按钮请查看文档。

<button id="logina" type="button">FaceBook登录</button>

<script>
document.getElementById('logina').onclick = function(){//登录
	FB.login(function(response) {
		if (response.status === 'connected') {
			FB.api('/me', function(response) {
		      console.log('Successful login for: ' + response.name);
		    });
		} else {
			console.log('该用户没有登录');
		}
	}, {scope: 'public_profile,email'});
};
</script>
还可以选择随此函数调用传递可选的  scope  参数,此参数是要向应用用户请求的一系列以逗号分隔的 权限 。 以下是调用包含  FB.login() (与“登录”按钮中使用的相同)的  scope  的方法。 在本示例中,请求的是用户的电子邮箱和也在使用应用的好友列表

5.让用户退出

<button type="button" id="signout" >退出</button>

<script>
document.getElementById('signout').onclick = function(){
	FB.logout(function(response) {
		console.log("用户已退出");
	});
};
</script>

详细demo下载

本demo示例利用JavaScript SDK实现了Facebook、google、LinkedIn第三方登录,可以获取用户的基本信息,并且同时包括官方登录按钮和自定义登录按钮代码示例。

  • 3
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论
在React Native中封装原生第三方SDK的步骤如下: 1. 创建一个原生模块(Native Module),以便React Native应用程序可以与原生代码进行交互。对于iOS,你需要创建一个Objective-C或Swift类;对于Android,你需要创建一个Java类。 2. 在原生模块中编写代码,调用第三方SDK的API并将其封装为JavaScript可以调用的函数。你可以使用React Native提供的RCT_EXPORT_MODULE宏将该模块导出到JavaScript中。例如,下面是一个在iOS中封装Facebook SDK的例子: ```objective-c #import <FBSDKCoreKit/FBSDKCoreKit.h> #import <React/RCTBridgeModule.h> @interface MyFacebookModule : NSObject <RCTBridgeModule> @end @implementation MyFacebookModule RCT_EXPORT_MODULE(); RCT_EXPORT_METHOD(login:(RCTPromiseResolveBlock)resolve rejecter:(RCTPromiseRejectBlock)reject) { FBSDKLoginManager *loginManager = [[FBSDKLoginManager alloc] init]; [loginManager logInWithPermissions:@[@"public_profile", @"email"] fromViewController:nil handler:^(FBSDKLoginManagerLoginResult *result, NSError *error) { if (error) { reject(@"login_error", error.localizedDescription, error); } else if (result.isCancelled) { reject(@"login_cancelled", @"User cancelled login", nil); } else { resolve(result.token.tokenString); } }]; } @end ``` 这个模块导出了一个名为`login`的函数,该函数会登录Facebook,并返回一个Promise,该Promise将在登录成功后解析为一个Facebook访问令牌,或在登录失败时拒绝。 3. 在JavaScript中导入原生模块,并使用它提供的函数。例如,你可以使用以下代码在React Native应用程序中调用上述iOS模块: ```javascript import { NativeModules } from 'react-native'; const { MyFacebookModule } = NativeModules; MyFacebookModule.login() .then(token => console.log(`Facebook access token: ${token}`)) .catch(error => console.error(`Failed to login: ${error}`)); ``` 这个代码导入了名为`MyFacebookModule`的原生模块,并调用其`login`函数。当该函数返回时,它会返回一个Promise,你可以使用该Promise来处理成功或失败的情况。 通过将原生第三方SDK封装到React Native模块中,你可以轻松地在React Native应用程序中使用SDK,并将其与JavaScript代码无缝集成。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

zh_rey

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值