我对Facebook的审核过程感到非常沮丧。到目前为止,是我所经历过的最繁琐的事情(包括Apple / Google Play)。我们最新的难题是,在Android上,Facebook会引发权限错误,但在iOS上可以正常工作。
技术堆栈的上下文。我们使用react-native(0.55.4),react-native-firebase和react-native-fbsdk。我认为facebook sdk的本地版本可能在iOS上较旧,而在Android上则较新。但是设置可以正常工作,登录很好,而且所有这些。
备份一点。此功能用于向用户显示附近地点的列表。我们的代码是一个简单的图形API请求,正是这样:
'url' => action(route('ploscriteria.index')),
不要介意一些额外的东西。只需给搜索端点打电话即可。
此代码在iOS上完美运行,并返回几个非常好的结果。但是,在Android上,我们会遇到以下错误:export async function getNearbyFacebookPlaces (location: RadarLocation): Promise<FacebookPlace[]> {
const facebookEdge = 'search?type=place¢er=' +
location.latitude + ',' + location.longitude +
'&distance=' + MAX_NEARBY_PLACE_DISTANCE +
'&fields=name,location,category_list'
try {
const results: InitFacebookPlace[] = await startGraphRequest(facebookEdge)
return results.map((place: InitFacebookPlace): FacebookPlace => {
const primaryCategory = place.category_list[0].name.replace(/\s+/g, '-').toLowerCase()
return {
facebookId: place.id,
name: place.name,
location: place.location,
categories: [primaryCategory]
}
})
} catch (e) {
console.error(e)
throw e
}
}
// Promise wrapper around a desired graph edge:
function startGraphRequest (path: string): Promise<Array<Object>> {
return new Promise((resolve, reject) => {
new GraphRequestManager().addRequest(new GraphRequest(
path,
graphConfig,
(error: ?Object, result: ?Object) => {
if (error) {
reject(error)
} else if (result) {
resolve(result.data)
} else {
reject(new Error('No result object on facebook graph request.'))
}
}
)).start()
})
}
等。重复相同的内容很多次。
为什么我们在Android上却出现此错误,而在iOS上却没有,我如何使其在Android上正常工作?
我想发现它在iOS上运行的原因是为了在Android上获得相同的魔力。这将是一项疯狂的工作(创建新的测试Facebook应用程序,新的Firebase项目,复制每个设置,重新配置项目中的facebook sdk以实现一项简单功能等),因此非常适合也可以在Android上获得神奇的iOS行为。