use*_*104 6 javascript php facebook facebook-graph-api
我正在建立会员订购系统,我想让用户无需注册,他们可以直接登录Facebook.
问题是,这种方法的数据流是什么?例如,Facebook是否返回用户帐户/ ID /电子邮件或任何其他信息,以便我可以将它们插入我的系统,或者它只是一个表明他/她已登录的会话?
另外,我想收集他们的电话号码(订单确认).如果访问者没有在他们的Facebook帐户中具体说明,如何处理此案?
以下是我研究后的代码,但似乎只能返回会员ID?
<?php
define('YOUR_APP_ID', 'YOUR APP ID');
//uses the PHP SDK. Download from https://github.com/facebook/php-sdk
require 'facebook.php';
$facebook = new Facebook(array(
'appId' => YOUR_APP_ID,
'secret' => 'YOUR APP SECRET',
));
$userId = $facebook->getUser();
?>
<html>
<body>
<div id="fb-root"></div>
<?php if ($userId) {
$userInfo = $facebook->api('/' . $userId); ?>
Welcome <?= $userInfo['name'] ?>
<?php } else { ?>
<fb:login-button></fb:login-button>
<?php } ?>
<div id="fb-root"></div>
<script>
window.fbAsyncInit = function() {
FB.init({
appId : 'YOUR_APP_ID', // App ID
channelUrl : '//WWW.YOUR_DOMAIN.COM/channel.html', // Channel File
status : true, // check login status
cookie : true, // enable cookies to allow the server to access the session
xfbml : true // parse XFBML
});
FB.Event.subscribe('auth.login', function(response) {
window.location.reload();
});
};
// Load the SDK Asynchronously
(function(d){
var js, id = 'facebook-jssdk', ref = d.getElementsByTagName('script')[0];
if (d.getElementById(id)) {return;}
js = d.createElement('script'); js.id = id; js.async = true;
js.src = "//connect.facebook.net/en_US/all.js";
ref.parentNode.insertBefore(js, ref);
}(document));
</script>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)
我现在在一个项目中使用 Facebook SDK for PHP,这是我请求用户数据的方式:
// If user is not logged in, set the login URL asking for permissions
if( $userId == 0 ) {
// Generate a login url
$url = $facebook->getLoginUrl( array( 'scope' => 'email, user_status' ) );
... Your Login button ...
} else {
// Get user's info
$userdata = $facebook->api( '/me' );
$data = array(
'first_name' => $userdata['first_name'],
'last_name' => $userdata['last_name'],
'username' => $userdata['username'],
'email' => $userdata['email'],
'languages' => $userdata['languages'],
'locale' => $userdata['locale'],
'timezone' => $userdata['timezone'],
'gender' => $userdata['gender'],
'location' => $userdata['location'],
'hometown' => $userdata['hometown'],
);
print_r( $data );
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3205 次 |
| 最近记录: |