`
flex_莫冲
  • 浏览: 1095599 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

facebook和新浪微博的oauth2.0登錄

    博客分类:
  • web
阅读更多
用facebook和新浪微博做oauth登入

facebook
參考資料
https://developers.facebook.com/docs/javascript/quickstart/v2.1
<!DOCTYPE html>
<html>
	<head>
		<title>Facebook Login JavaScript Example</title>
		<meta charset="UTF-8">
	</head>
	<body>
		<script>
			// This is called with the results from from FB.getLoginStatus().
			function statusChangeCallback(response) {
				console.log('statusChangeCallback');
				console.log(response);
				// The response object is returned with a status field that lets the
				// app know the current login status of the person.
				// Full docs on the response object can be found in the documentation
				// for FB.getLoginStatus().
				if (response.status === 'connected') {
					// Logged into your app and Facebook.
					testAPI();
				} else if (response.status === 'not_authorized') {
					// The person is logged into Facebook, but not your app.
					document.getElementById('status').innerHTML = 'Please log ' + 'into this app.';
				} else {
					// The person is not logged into Facebook, so we're not sure if
					// they are logged into this app or not.
					document.getElementById('status').innerHTML = 'Please log ' + 'into Facebook.';
				}
			}

			// This function is called when someone finishes with the Login
			// Button.  See the onlogin handler attached to it in the sample
			// code below.
			function checkLoginState() {
				FB.getLoginStatus(function(response) {
					statusChangeCallback(response);
				});
			}


			window.fbAsyncInit = function() {
				FB.init({
					appId : 'xxxx',
					cookie : true, // enable cookies to allow the server to access
					// the session
					xfbml : true, // parse social plugins on this page
					version : 'v2.1' // use version 2.1
				});

				// Now that we've initialized the JavaScript SDK, we call
				// FB.getLoginStatus().  This function gets the state of the
				// person visiting this page and can return one of three states to
				// the callback you provide.  They can be:
				//
				// 1. Logged into your app ('connected')
				// 2. Logged into Facebook, but not your app ('not_authorized')
				// 3. Not logged into Facebook and can't tell if they are logged into
				//    your app or not.
				//
				// These three cases are handled in the callback function.

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

			};

			// Load the SDK asynchronously
			( 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 = "//connect.facebook.net/en_US/sdk.js";
					fjs.parentNode.insertBefore(js, fjs);
				}(document, 'script', 'facebook-jssdk'));

			// Here we run a very simple test of the Graph API after login is
			// successful.  See statusChangeCallback() for when this call is made.
			function testAPI() {
				console.log('Welcome!  Fetching your information.... ');
				FB.api('/me', function(response) {
					console.log('Successful login for: ' + response.name);
					document.getElementById('status').innerHTML = 'Thanks for logging in, ' + response.name + '!';
				});
			}
		</script>

		<!--
		Below we include the Login Button social plugin. This button uses
		the JavaScript SDK to present a graphical Login button that triggers
		the FB.login() function when clicked.
		-->

		<fb:login-button scope="public_profile,email" onlogin="checkLoginState();" auto_logout_link="true" show_faces="false" 
			size="xlarge"></fb:login-button>


		<div id="status"></div>

	</body>
</html>


請注意:
1 website url必須用.com,.net等符合網站域名的後綴結束。
2 爲了匹配website url,vhost也需要設置跟website一樣的domain
3 //connect.facebook.net/en_US/sdk.js 無法加載,請解決以上2個問題就可以加載了。必須在backend端執行。不能直接訪問下載sdk.js。
login 成功後會返回

		
	
authResponse
	Object { accessToken="xxx...xxx", userID="xxx", expiresIn=5422, 更多...}
	
accessToken
	"xxxx"
	
expiresIn
	5422
	
signedRequest
	"xxx"
	
userID
	"xxxx"
	
status


新浪微博
新浪微博要在控制臺中設置callback url和取消callback url。
http://open.weibo.com/apps/698437227/info/advanced
OAuth2.0 授权设置编辑
授权回调页:http://weibo-oauth-local/callback.php
取消授权回调页:http://weibo-oauth-local/cancelCallback.php

下載php sdk。修改config.php
<?php
header('Content-Type: text/html; charset=UTF-8');

define( "WB_AKEY" , 'xxx' );
define( "WB_SKEY" , 'xxx' );
define( "WB_CALLBACK_URL" , 'http://weibo-oauth-local/callback.php' );


WB_CALLBACK_URL要跟在控制台配置的一致。否則無法調用。
<?php
session_start();

include_once( 'config.php' );
include_once( 'saetv2.ex.class.php' );

$o = new SaeTOAuthV2( WB_AKEY , WB_SKEY );

if (isset($_REQUEST['code'])) {
	$keys = array();
	$keys['code'] = $_REQUEST['code'];
	$keys['redirect_uri'] = WB_CALLBACK_URL;
	var_dump($keys);
	try {
		$token = $o->getAccessToken( 'code', $keys ) ;
		var_dump($token);
		echo $o->client_id;
	} catch (OAuthException $e) {
	}
}

if ($token) {
	$_SESSION['token'] = $token;
	setcookie( 'weibojs_'.$o->client_id, http_build_query($token) );
?>
授权完成,<a href="weibolist.php">进入你的微博列表页面</a><br />
<?php
} else {
?>
授权失败。
<?php
}
?>



回調的php代碼中會返回accesstoken和uid。
分享到:
评论

相关推荐

    新浪微博OAuth2.0 SDK+ Demo C#

    本文将深入探讨如何使用C#语言结合新浪微博OAuth2.0 SDK,实现对微博数据的获取和操作,以及通过提供的Demo来理解和实践这个过程。 首先,OAuth2.0是一种授权框架,它允许第三方应用在用户授权的情况下访问其存储在...

    新浪微博OAuth2.0登录

    本教程将详细阐述如何使用C#语言和MVC框架实现新浪微博的OAuth2.0登录流程。 首先,我们需要理解OAuth2.0的基本流程。OAuth2.0的核心是四类角色:资源所有者(用户)、资源服务器(如新浪微博)、客户端(你的应用...

    IOS新浪微博Oauth2.0授权demo

    在iOS平台上实现新浪微博的OAuth2.0授权是一个常见的需求,特别是在开发社交应用或者需要与微博进行数据交互的应用中。OAuth2.0是一种授权框架,它允许第三方应用在用户许可的情况下,安全地访问用户在特定服务(如...

    新浪腾讯微博oauth2.0登录授权及转发实例

    本教程将深入讲解如何使用新浪和腾讯微博的OAuth2.0实现用户登录授权以及内容的转发功能。 1. OAuth2.0基础概念 OAuth2.0的核心是授权流程,涉及四个角色:资源所有者(User)、资源服务器(Resource Server)、...

    Java版腾讯微博OAuth2.0授权可发文本微博示例代码

    在OAuth2.0中,应用开发者需要向服务提供商(如腾讯微博)申请一个客户端ID和客户端秘密。这些凭证用于识别你的应用,并在授权过程中验证请求。用户在使用应用时,会被重定向到服务提供商的授权页面,他们可以在此...

    新浪微博OAuth2.0API源码

    新浪微博OAuth2.0API源码 一个更方便,更快速的C#SDK,希望能帮助更多的朋友学习和使用 新浪微博OAuth2.0API使用流程: 1、根据需要求修改配置文件(Wbm.SinaV2.config)。 2、注册ApplicationKey。(参考...

    新浪微博OAuth2.0认证实现登陆

    总的来说,实现新浪微博OAuth2.0认证登录是一个涉及用户授权、安全性和用户体验的过程。了解并遵循OAuth2.0协议,结合新浪微博的API文档,你可以为用户提供安全且便捷的登录方式。在开发过程中,持续学习和更新知识...

    新浪微博OAuth2.0API(Wbm.SinaV2API)V1.0.10.31

    Wbm.SinaV2API V1.0.10.31作为C#的SDK,它封装了与微博OAuth2.0 API交互的复杂过程,使开发者能够轻松实现微博登录、授权和数据获取等功能。该SDK提供了一系列的接口,包括获取请求令牌、用户授权、交换访问令牌、...

    新浪微博OAuth2.0分享

    【标题】:“新浪微博OAuth2.0分享” 在互联网社交领域,新浪微博是中国极具影响力的社交媒体平台之一。为了方便开发者集成微博功能到自己的应用中,新浪提供了OAuth2.0授权协议的SDK,即“weiboSDK2.1_130806.jar...

    新浪微博Oauth2.0源码

    新浪微博oauth认证源码,只要加入开发者自己的key与secret即可通过认证,进行相应的开发

    OAuth2.0新浪微博简单示例

    这个“OAuth2.0新浪微博简单示例”是为初学者设计的,旨在帮助理解OAuth2.0的工作原理及其在实际应用中的实现方式,特别是与新浪微博的集成。 首先,我们来深入了解一下OAuth2.0的核心概念: 1. **客户端(Client...

    android新浪微博Oauth2.0分享文字和图片

    本文将深入探讨如何在Android应用中实现基于Oauth2.0的新浪微博文字和图片分享功能。 首先,我们需要理解Oauth2.0的基本原理。Oauth2.0是一种授权框架,它允许第三方应用在用户授权的情况下访问特定资源,而无需...

    使用WebView实现新浪微博Oauth2.0认证(android)

    本文将详细介绍如何使用WebView组件实现新浪微博的OAuth2.0认证过程,这是一个安全、便捷的方法,避免了直接操作HTML代码获取验证码带来的潜在风险。 OAuth2.0是一种授权框架,它允许第三方应用在用户的授权下访问...

    微博Oauth2.0 协议用java 实现单点登录获取用户信息

    微博OAuth2.0协议是微博平台提供的一种授权机制,它允许第三方应用在用户授权的情况下,安全地获取微博用户的个人信息和进行相关操作。在Java中实现微博的单点登录(Single Sign-On, SSO)功能,涉及到的主要步骤...

    IOS sina 腾讯 微博 Oauth2.0 授权DEMO

    这说明除了Sina Weibo之外,DEMO还支持腾讯微博的OAuth2.0授权,使得用户可以使用同一套授权机制登录并分享到两个不同的社交媒体平台。在实现这个功能时,开发者需要遵循腾讯微博的API文档,处理好授权请求和响应,...

    android 腾讯微博Oauth2.0认证以及自定义webview认证

    通过以上步骤,开发者可以在Android应用中实现腾讯微博的OAuth2.0认证,并通过自定义WebView为用户提供流畅的登录体验。在实际开发过程中,需要注意适配不同版本的Android系统,以及优化用户体验,如加载进度提示、...

    【第三方开放平台系列】腾讯微博Oauth2.0授权认证-源码

    腾讯微博作为中国知名的社交媒体平台,也提供了类似的开放平台,允许开发者利用Oauth2.0授权协议来实现用户身份验证和数据获取。本文将深入讲解腾讯微博Oauth2.0授权认证的原理及其在易语言中的实现。 OAuth2.0是一...

    新浪微博和腾讯微博OAuth2.0授权笔记+实例(Judas.n)

    对不起,我不得不给这个资源挂上分数,因为该死的CSDN非要折腾个这垃圾功能,我要下载别人的东西没积分没办法....这个里面包括代码,我整理的word笔记文档。 只是我觉得这远远不够,过几天我会录制一个视频,因为我...

    asp.net 网易微博 OAuth 2.0 实例源码

    asp.net 网易微博 OAuth 2.0 实例源码 1.需要在http://open.t.163.com/ 申请一个帐号 2.获取Appkey,AppSecret 3.需要配置 oauth.config 填入相应的Appkey,AppSecret,原来上面的是我自己乱填的,所以测试需要填你...

    网易微博API OAUTH2.0

    **网易微博API OAUTH2.0** 在互联网应用开发中,授权是确保用户安全和数据隐私的...理解和掌握OAuth2.0的工作原理以及如何与网易微博API对接,对于任何想在网易微博生态系统中构建应用的开发者来说都是至关重要的。

Global site tag (gtag.js) - Google Analytics