javascript - TypeError:试图分配给 FBGraphRequestManager 中的只读属性
问题描述
我已将 Facebook 登录集成到我的 react 本机应用程序中。成功登录后,我正在使用GraphRequest
获取用户配置文件。但是,我间歇性地看到以下错误,我不确定它为什么会发生?
下面是我的代码FacebookService.js
import React from 'react'
import FBSDK from 'react-native-fbsdk'
const {
LoginManager,
AccessToken,
GraphRequest,
GraphRequestManager,
} = FBSDK;
class FacebookService {
constructor() {
this.requestManager = new GraphRequestManager()
}
loginToFacebook(callback)
{
LoginManager.logInWithPermissions(['email','public_profile',/*'user_friends'*/]).then(
function(result) {
if (result.isCancelled) {
alert('Login was cancelled');
} else {
console.log(result)
alert('Login was successful with permissions: '
+ result.grantedPermissions.toString());
AccessToken.getCurrentAccessToken().then(
(data) => {
//console.log(data);
callback(data.accessToken)
//alert(data.accessToken.toString())
}
)
}
},
function(error) {
//callback(error)
alert('Login failed with error: ' + error);
}
);
}
logout()
{
LoginManager.logOut()
}
async fetchProfile() {
return new Promise((resolve, reject) => {
const request = new GraphRequest(
'/me',
null,
(error, result) => {
if (result) {
const profile = result
profile.avatar = `https://graph.facebook.com/${result.id}/picture?type=large`
resolve(profile)
} else {
reject(error)
}
}
)
this.requestManager.addRequest(request).start()
})
}
}
export const facebookService = new FacebookService()
正如我上面提到的,这个问题是间歇性发生的,所以我真的不知道发生了什么。
解决方案
我能够通过this.requestManager = new GraphRequestManager()
从构造函数中删除新实例并将其直接添加到 requestGraph 中来解决这个问题,如下所示:
async fetchProfile(callback) {
return new Promise((resolve, reject) => {
const request = new GraphRequest(
'/me',
{
parameters: {fields: { string: 'picture.width(400),name' }}
},
(error, result) => {
if (result) {
const profile = result
//profile.avatar = `https://graph.facebook.com/${result.id}/picture?&height=400&width=400`;
resolve(profile)
} else {
reject(error)
}
}
)
new GraphRequestManager().addRequest(request).start()
})
}
让我知道这是否也可以为您解决。干杯! 我可能会尝试使用反应组件并在 ComponentDidMount 中初始化 GraphRequestManager。
推荐阅读
- spring - 没有“Access-Control-Allow-Origin”标头 > 允许从生产网站到内部 Spring 应用程序的请求
- php - 上传到我的服务器并由 PHP 脚本处理的 Word 文件的错误编码
- sas-macro - 使用 sas 在宏中附加文件
- primefaces - JSF / primefaces 处理ajax请求中的控制字符(换页十六进制:0x0c)?
- spring - JedisConnectionFactory 的方法已被弃用。在 Spring Batch 中使用哪些 XML 配置?
- javascript - 这被 babel 解析为 UMD 模块中的未定义
- python - 记录注册用户的操作
- python - 为功能性 keras 模型格式化具有多个类别的多个输入并将其提供给模型
- python-3.x - 使用 python 获取“成本”google adward api
- pyspark - 以相同顺序对具有至少两次相同描述符的案例进行分组