2012-04-30 167 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上開發應用程序的設置頁面中指定。

因此,網絡,你可以使用名稱或命名空間進行驗證,但如果你使用命名空間,你必須檢查它確實已被添加到應用程序設置。