- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在构建一个表单,并希望通过例如获取“first_name”和“last_name”等字段facebook 或 google 数据,但只接收一个对象,每个条目都是“null”
我尝试添加自定义 ScropeBuilder,获取不同的帐户。
我的应用程序仅向浏览器终端提供访问 token ,以便我可以通过 postman 发送请求以获取我想要的数据。
token Controller :
package com.example.demo;
import com.restfb.DefaultFacebookClient;
import com.restfb.FacebookClient;
import com.restfb.Version;
import com.restfb.scope.FacebookPermissions;
import com.restfb.scope.ScopeBuilder;
import com.restfb.types.User;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.autoconfigure.security.SecurityProperties;
import org.springframework.social.connect.ConnectionRepository;
import org.springframework.social.facebook.api.Facebook;
import org.springframework.social.facebook.api.FacebookProfile;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RestController;
@RestController
@RequestMapping(value="/tokencontroller")
public class TokenController {
@Autowired
Facebook facebook;
@Autowired
ConnectionRepository connectionRepository;
@RequestMapping(value = "/userdata/{accessToken}", method = RequestMethod.POST)
public UserModel userMod(@PathVariable(value = "accessToken") String accessToken) {
UserModel userModel = new UserModel();
ScopeBuilder scopeBuilder = new ScopeBuilder();
scopeBuilder.addPermission(FacebookPermissions.PUBLIC_PROFILE);
/*if(connectionRepository.findPrimaryConnection(Facebook.class) == null) {
return null;
}*/
System.out.println("\n \n \n accesstoken: "+accessToken);
FacebookClient fbClient = new DefaultFacebookClient(accessToken, Version.VERSION_4_0);
User user = fbClient.fetchObject("me",User.class);
System.out.println("User: "+user);
System.out.println("Firstname: "+user.getFirstName());
return userModel;
}
@RequestMapping(value = "/getURL")
public void getUrl(){
ScopeBuilder scopeBuilder = new ScopeBuilder();
scopeBuilder.addPermission(FacebookPermissions.PUBLIC_PROFILE);
FacebookClient client = new DefaultFacebookClient(Version.LATEST);
String url = client.getLoginDialogUrl("502780177145376","/connect/facebook",scopeBuilder);
System.out.println(url);
}
}
```
facebookConnect.html
```HTML
<!DOCTYPE html >
<html>
<head>
<title>Facebook Login JavaScript Example</title>
<meta charset="UTF-8"/>
<script src="scripts/facebookSDK.js"></script>
</head>
<body>
<h1>lala land</h1>
<!--
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.
-->
<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 {
// The person is not logged into your app or we are unable to tell.
document.getElementById('status').innerHTML = 'Please log ' +
'into this app.';
}
}
// 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 : '502780177145376',
cookie : true, // enable cookies to allow the server to access
// the session
xfbml : true, // parse social plugins on this page
version : 'v4.0' // The Graph API version to use for the call
});
// 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 = "https://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',{"fields":"first_name"}, function(response) {
console.log('Successful login for: ' + response.name);
document.getElementById('status').innerHTML =
'Thanks for logging in, ' + response.name + '!';
});
}
function login(){
FB.login(function(response){
console.log("\n Response: "+response.connectionState);
try{
if(response == 'connected')
console.log("Connected: "+true);
else{
console.log("not connected");
console.log("accesstoken: " + response.authResponse.accessToken);
}}
catch (e) {
console.log(e);
console.log("is nich");
}
});
}
</script>
<button onclick="login()">Login Button</button>
<div id="status">
</div>
</body>
</html>
```
I expect the output to be:
```JSON
{
"firstName": John,
"lastName": Johnson,
"address": myAddress,
"birthDay": myBirthday,
"email": myEmail,
"gender": myGender
}
```
Actual output is:
```JSON
{
"firstName": null,
"lastName": null,
"address": null,
"birthDay": null,
"email": null,
"gender": null
}
```
When logging it in console there is no exception or error message, just:
```
accesstoken: EAAHJRqHb3iABAEyFblVBaOAaEjbsw8q4cNSQsQuFbSI40r3GZAAZBMe6e0VZCrNX1I8L16VZAeWVZALrws0AmcLFZCgcuJHyRB3briOYS7QKCm3T7fIi3WZBsAngtIpDlewm14ZCIq66FMtZB5ZChZBkNUciwcpJJ3f0ZAuvcYozEZANAZB3KIuY7KKmHdnaVj5vkSdL0NlgAnZBrBcsZAZBp6NZBeUygz
User: User[about=null ageRange=null bio=null birthday=null birthdayAsDate=null context=null cover=null currency=null devices=[] education=[] email=null favoriteAthletes=[] favoriteTeams=[] firstName=null gender=null hometown=null hometownName=null id=111826290166761 idsForApps=[] idsForBusiness=[] idsForPages=[] inspirationalPeople=[] installType=null installed=null interestedIn=[] invitableFriends=[] isSharedLogin=null isVerified=null labels=[] languages=[] lastName=null likes=null link=null locale=null location=null meetingFor=[] metadata=null middleName=null name=John Johnson nameFormat=null paymentPricepoints=null picture=null political=null publicKey=null quotes=null relationshipStatus=null religion=null securitySettings=null sharedLoginUpgradeRequiredBy=null shortName=null significantOther=null sports=[] testGroup=null thirdPartyId=null timezone=null tokenForBusiness=null type=null updatedTime=null username=null verified=null videoUploadLimits=null viewerCanSendGift=null website=null work=[]]
Firstname: null```
I don't get why it's not fetching the correct userdata.
May anyone can help me?
You can check it out at github if u want to: https://github.com/rosariop/FacebookSpringboottest2
最佳答案
关于javascript - 接收 Userobject 但每个条目都是 null (facebook restfb),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57509470/
情况:我想从数据条目列表导航回我的 PageViewController。 before 和 previous 函数起作用 func pageViewController(pageViewContro
尊敬的 StackOverflow 用户 我有一个 gradle 项目,我想将其工件转换为 osgi 包。在这个包中,我有: 我不想导出的包(可能不会出现在 list 的 Export-Package
我为我的 PendingIntent 设置了一个警报。现在我想在我的 Activity 中显示是否设置了此警报。 Intent service = new Intent(context, MyServ
我有 2 个表、作者和书籍 authors 包含唯一的 IDauthorId 书籍也包含此作为外键 我需要知道书籍数量最多的作者。如果 2 个或更多作者并列最多书籍,我需要显示这两位作者 我已经能够通
我有一个名为 prospective_shop 的表,其中一个列名称是“用户名”。用户名未设置为主键,但我想删除所有具有重复用户名的行。我怎样才能以最快的方式做到这一点? 我尝试执行以下操作: ALT
我现在可以添加条目了。在我的应用程序中,用户可以在他的日历上输入约会/事件。但在他这样做之前,它应该向他显示他已经添加的事件。它应该从日历中获取事件并将其显示给他。这该怎么做?我被困在这部分。提前致谢
#include #include #include #include #include #include char *msg; ssize_t write_proc(struct file
我想将大于 1024 个字符的字符串传递到我的模块(文件系统)。由于内核参数限制为 1024 个字符,someone recommended改为使用 sysfs。 我试图包括 this example
我正在尝试使用 SQLAlchemy 构建以下查询(用作包含查询的子查询,该查询定义名为 tbl_outer 的别名): SELECT max(tbl.ts) AS max_1 FROM tbl WH
假设我有两张 map : Map map1 = Map.of( "a", "1", "b", "2", "c", "3", "x
通过简化示例,假设您有以下数据集: A B C Name Group Amount Dave A 2 Mike B 3 Adam C 4
我正在尝试在我的服务器上创建一个三级域虚拟主机。我希望配置设置正确,但我得到一个 ERR_NAME_NOT_RESOLVED错误。 我已经读到我必须在某处“添加 DNS 条目”以便解析名称,但我该怎么
我需要一个可用于在逗号分隔列表中查找第 N 个条目的正则表达式。 例如,假设此列表如下所示: abc,def,4322,mail@mailinator.com,3321,alpha-beta,43 .
GWT 应用程序(在 Eclipse 中开发)的源代码管理忽略文件中的典型条目是什么? 最佳答案 我会推荐: 你leave the eclipse files (.project, .classpat
我必须创建显示表 (Tbl) 中所有字段的输出,并创建一个额外的列来按月计算每个客户的累计总和(例如,如果客户在 4 月份有两次销售,新列将具有这些销售额和两行中任何先前销售额的总和)。我能做的就这么
文档 ( http://kubernetes.io/docs/user-guide/configmap/ ) 上用于使用值的示例基于 ConfigMap,其中每个数据条目都是一对/值。例子: apiV
我有一个奇怪的错字,我一遍又一遍地犯,而不是实际工作我的打字技巧,我想编辑我的 AutoHotkey 脚本来弥补这一点。 有时,当我输入大写字母时,我会点击:按钮并输入“I:”,我希望 AHK 仅用字
使用 lgdt 初始化 GDT 并将其加载到 GDTR 后,稍后如何更新 GDT? 如果我使用 sgdt 命令获取基地址,然后更新或添加条目,然后使用 lgdt 再次重新加载,我是否正确?还有其他方法
我有两个应用程序共享同一个数据库,即 API 和 MVC5 应用程序。两者都在本地主机上运行良好,但在部署到我的 Azure 帐户时出现此错误 Configuration Error Descrip
我正在尝试修剪我拥有的一些文件。我将为您保存到目前为止我编写的野兽,并通过提供虚构代码使其保持简单。 让我们来看看这个数组: [System.String[]]$Collection = 'Invit
我是一名优秀的程序员,十分优秀!