2012-04-30 140 views
4

我使用Facebook的图形API来验证Facebook应用程序,有一个属性,它是由图形API返回canvas_name但Facebook与namespace取代它,我开始使用namespace而不是canvas_name。正如Facebook API文档所述,我们已经使用名称空间删除了画布名称。 问题是,当我调用Graph API时,它有时会返回namespace,有时仅返回name,因此决定使用哪个属性会很困惑。Facebook开源图形API名称和命名空间的属性

以下是两个不同的Facebook应用程序,我通过Graph API验证并获得了不同的属性。

我应该使用哪个属性? namenamespace

http://graph.facebook.com/173782752713273

{ 
    "id": "173782752713273", 
    "name": "fbfarooqtv", 
    "link": "http://www.facebook.com/apps/application.php?id=173782752713273",  
    "namespace": "fbfarooqtv",  
    "icon_url": "http://photos-g.ak.fbcdn.net/photos-ak-snc7/v85006/137/173782752713273/app_2_173782752713273_9103.gif",  
    "logo_url": "http://photos-g.ak.fbcdn.net/photos-ak-snc7/v85006/137/173782752713273/app_1_173782752713273_8525.gif",  
    "weekly_active_users": "1",  
    "monthly_active_users": "2"  
} 

和其他收益

http://graph.facebook.com/342927909107736

{ 
    "id": "342927909107736", 
    "name": "Ticketveri", 
    "link": "http://www.facebook.com/apps/application.php?id=342927909107736", 
    "icon_url": "http://static.ak.fbcdn.net/rsrc.php/v1/yT/r/4QVMqOjUhcd.gif?_fbgz=1", 
    "logo_url": "http://static.ak.fbcdn.net/rsrc.php/v1/y_/r/9myDd8iyu0B.gif?_fbgz=1" 
} 

谢谢大家给出的答案, 我已经完成了使用的appid我上面的任务,如果有人不指定命名空间的Facebook应用程序,他们可以浏览到使用的appid这样 http://apps.facebook.com/173782752713273

有应用程序,如果一个指定的命名空间,然后一个可以导航到使用的appid有应用和命名空间,因为 http://apps.facebook.com/342927909107736http://apps.facebook.com/fbfarooqtv。 和我从页面的引用来验证Facebook应用程序,现在我已经在命名空间中添加了回退,如果任何应用程序没有名称空间,那么我从引用来源获取appId并通过调用图API来验证它,如果它返回关于应用程序的信息存在。作为波纹管

http://graph.facebook.com/173782752713273 
+0

感谢大家给出的答案,我已经完成了我的上述任务使用appId,如果任何人不指定Facebook应用程序的命名空间,他们可以导航到那里应用程序使用appId链接这个http://apps.facebook.com/342927909107736我从页面 – Sameer

+0

的引荐来验证facebook应用程序,你知道为什么有时它只是返回false和其他时间上述对象? – Adgezaza

回答

5

我认为你应该使用“名称”,而不是“名称空间”。

原因是“名称”对应于“应用程序显示名称”,“名称空间”对应于应用程序的应用程序设置中的“应用程序名称空间”属性。由于“应用显示名称”属性是强制性的,因此保证您总是在“名称”中获取值,而“应用名称空间”属性是可选的,因此您只会获得名称空间的值在APP设置中设置。

enter image description here

+0

我无法使用名称而不是名称空间,因为我在获取名称空间表单图API后将用户重定向到FB App – Sameer

+0

我认为您必须处理它,因为导航到页面似乎不是一个好主意,这不存在。 –

2

您选择可能取决于你所说的“验证”应用什么价值。我工作的地方有两个“应用程序”。一个是Windows桌面应用程序,它不需要命名空间,也没有。我们的其他“应用程序”是一个“Facebook应用程序”,它在Web浏览器中的Facebook画布页面内运行,这需要一个命名空间并且它有一个。

再一次,根据你正在做什么来“验证”,应用程序可能会确定你需要这些值中的哪一个。例如,如果您想将浏览器导航到在Facebook画布中运行的“应用程序”,则需要构建一个URL,如“apps.facebook”。COM/app_namespace_here”。

我不知道你将如何验证一个桌面应用程序(或移动应用)。

+0

为了验证用户我要求的appid当用户给我自己的appid我所说的图形API来验证APPID像正确的appid图形API是“graph.facebook.com/1234567890”返回名称,命名空间的基本信息等 但问题是有时图API有时候不返回命名空间。并且我无法使用名称而不是名称空间,因为我在获取名称空间表单图API后将用户重定向到FB App – Sameer

+0

图API响应并不总是包含名称空间,因为并非所有应用程序都需要具有名称空间。使用api访问Facebook的桌面应用程序或网站不会有名称空间。没有命名空间意味着该应用程序不是一个Facebook的画布应用程序,你不能导航到浏览器。 – 2012-05-04 13:59:04

2

如果我理解你的问题吧,你在什么条件下的请求不知道到

https://graph.facebook.com/YOUR_APP_ID 

结果与现场叫命名空间的JSON响应,以及在什么条件下的命名空间领域不包括在内。

所有的应用程序都被当您创建的应用程序设置一个名称,这个名字字段将永远是当您发布abo时返回请求。

应用程序不必具有名称空间。创建应用程序时无需指定它(尽管您可以但不是强制性的)。如果您创建的应用没有名称空间,则上面的请求将返回没有名称空间的JSON响应。

为了话最有可能的原因,应用的两在你的例子不返回命名空间是它尚未在Facebook上开发应用程序的设置页面中指定。

因此,网络,你可以使用名称或命名空间进行验证,但如果你使用命名空间,你必须检查它确实已被添加到应用程序设置。