2016-04-21 45 views
0

我使用huandu/facebook爲Golang訪問FB API。 https://github.com/huandu/facebookGolang Facebook圖形API應用程序引擎

這在當地非常有效,但是當我嘗試從Google App Engine環境運行時,我無法運行它。

我在本地使用此代碼:

res, err := fb.Get("/me", fb.Params{ 
     "fields": "id,first_name,last_name,name", 
     "access_token": usertoken, 
    }) 

在文件(以上鍊接),他們確實提到了App Engine的環境,但我can'f弄清楚如何GE這與fb.Get公約的工作。

謝謝。

編輯

幾乎得到它的工作!:

// create a global App var to hold app id and secret. 
var globalApp = fb.New("<appId>", "<appSecret>") 

session := globalApp.Session(usertoken) //User token here 
context := appengine.NewContext(r) //Not sure what r should be... 
session.HttpClient = urlfetch.Client(context) 

res, err := session.Get("/me", nil) 

if err := json.NewEncoder(w).Encode(res); err != nil { 
    panic(err) 
} 

如果我這樣做,我找回ID和名稱。現在我需要做的是請求其他參數。我是否在app引擎上下文的r參數中執行此操作?

+0

你需要做的是在他們的文檔中很好的解釋。您需要將您的會話http客戶端設置爲'appengine/urlfetch'客戶端,因爲標準的'net/http'客戶端無法在那裏工作。只需導入該軟件包,並將相當於其樣本中的語句的語句放在適當的位置以使其工作。 IE應該在'init'或其他更大的範圍內執行此操作,以便應用程序發出的所有請求都使用重新分配的客戶端而不是標準客戶端。要獲得實際的答案,您需要發佈更多的代碼,因爲這些內容應該在任何請求之前發生。 – evanmcdonnal

+0

@evanmcdonnal我在上面添加了代碼,幾乎可以正常工作。只需要弄清楚如何完成其​​餘的請求參數。 – JoeyN

+0

「完成請求參數的其餘部分」是什麼意思? – Igy

回答

2

要回答問最後一個問題,appengine.NewContext(r)功能需要一個*http.Request作爲參數,但這指的是目前的要求,一個執行代碼。您可以使用r.URL.Query(),如果你想獲得的查詢參數被髮送到這個請求。

如果您想在其他請求中發送參數,例如Facebook API中的參數,您可以直接將它們包含在您傳遞給session.Get()的URL中。如果要從值映射圖構建查詢字符串,則可以使用url.Values.Encode。如果您需要使用GET以外的方法發出請求,例如需要JSON的API方法,則可以使用http.NewRequest例如。

session.HttpClient = urlfetch.Client(context) 
request, err := http.NewRequest("PUT", url, strings.NewReader("{ "someProperty": 1234 }")) 
response, err := session.Do(request) 
相關問題