2011-10-08 110 views
0

我開發了一個需要Facebook朋友的電子郵件地址的iphone應用程序。假設您的朋友有應用程序,並已授予的權限電子郵件和offline_access的話,我相信這是可能的使用方法:如何使用facebook sdk在ios中創建Facebook測試用戶

[facebook requestWithGraphPath:@"FRIEND_ID?fields=id,email" andDelegate:self]; 

獲得他們的電子郵件地址。爲了測試目的並提交給蘋果,您如何使用facebook sdk在iOS應用程序中創建一個Facebook測試用戶? Facebook提供了創建測試用戶的功能(http://developers.facebook.com/docs/test_users/),但我無法理解如何使用他們的sdk/graph api在我的ios應用程序中使用本網站上的信息。

回答

0

好的,我一直在研究這個,以下是我想到的。

根據文檔,應該能夠通過調用在所述圖形API來創建測試用戶如下:

NSString *urlString = [NSString stringWithFormat:@"%@/accounts/test-users", kAppId]; 
[facebook requestWithGraphPath:urlString andParams:params andHttpMethod:@"POST" andDelegate:self]; 

其中params是包含一些或所有的參數作爲在https://developers.facebook.com/docs/test_users/詳述一個NSMutableDictionary 。

然而,我發現,API期望的應用程序訪問令牌創建測試用戶,以及SDK文件Facebook.m內的方法requestWithGraphPath:andParams:andHttpMethod:andDelegate:實際發送用戶訪問令牌。即使您在params字典中專門設置了應用程序訪問令牌,它也會在此方法中用用戶訪問令牌覆蓋。

看來圍繞這種困境有兩種方法。我們可以用Facebook SDK猴子,並考慮到這一點,這是絕對不推薦。或者我們可以訴諸標準的HTTP請求,並將事情掌握在我們自己的手中。這是我如何處理第二種方法。

首先,我們需要應用程序訪問令牌,可以通過向以下網址發送請求來獲取令牌: https://graph.facebook.com/oauth/access_token?client_id=APP_ID&client_secret=APP_SECRET&grant_type=client_credentials

然後我們可以從該請求返回的應用程序訪問令牌在我們的下一個請求: https://graph.facebook.com/APP_ID/accounts/test-users?installed=true&name=FULL_NAME&permissions=read_stream&method=post&access_token=APP_ACCESS_TOKEN

總體格式都要求是一樣的。以下是兩個請求中的第二個請求的整個請求在代碼中的樣子。

NSString *urlString = @"https://graph.facebook.com/APP_ID/accounts/test-users"; 
NSURL *testUserUrl = [NSURL URLWithString:urlString]; 
NSMutableURLRequest *testUserRequest = [[NSMutableURLRequest alloc] initWithURL:testUserUrl]; 
[testUserRequest setHTTPMethod:@"POST"]; 
[testUserRequest addValue:@"text/plain" forHTTPHeaderField:@"content-type"]; 
NSString *bodyString = @"installed=true&permissions=read_stream&access_token=APP_ACCESS_TOKEN"; 
NSData *bodyData = [bodyString dataUsingEncoding:NSUTF8StringEncoding]; 
[testUserRequest setHTTPBody:bodyData]; 
[[NSURLConnection alloc] initWithRequest:testUserRequest delegate:self]; 
[testUserRequest release]; 

希望這將有助於讓你在測試用戶的實驗過程中得到幫助。

相關問題