Tôi đang cố gắng đăng ảnh lên trang Facebook có id = 226338660793052, nhưng nó vẫn kết thúc trong/me/photos. Tôi đang làm gì sai?Ảnh bài đăng lên Facebook kết thúc ở sai địa điểm
NSMutableDictionary *params = [NSMutableDictionary dictionaryWithObjectsAndKeys:
imageToSend, @"source",
facebookMessageTextView.text, @"message",
nil];
[facebook requestWithGraphPath:@"/226338660793052/photos" andParams:params andHttpMethod:@"POST" andDelegate:self];
Tôi không nhận được thông báo lỗi. Tôi không nhận được gì, ngoại trừ bức ảnh kết thúc trong album của riêng tôi, tôi/ảnh và không nằm trong album của 226338660793052/ảnh.
Nhưng khi tôi chỉ gửi một thông điệp tới trang đó, tôi nhận được một bài thành công trên timeline of the page:
NSMutableDictionary *params = [NSMutableDictionary dictionaryWithObjectsAndKeys:
@"http://www.bitsonthego.com", @"link",
@"my profile", @"name",
facebookMessageTextView.text, @"message",
nil];
[facebook requestWithGraphPath:@"/226338660793052/feed" andParams:params andHttpMethod:@"POST" andDelegate:self];
tôi đang thiếu gì ở đây? Tôi biết điều này là có thể, vì tôi có thể sử dụng trình duyệt để tải ảnh lên trang mong muốn, với tư cách người dùng không phải quản trị viên ngẫu nhiên. Tôi dường như không thể làm điều đó từ API đồ thị.
UPDATE:
tôi đã giải quyết một phần của vấn đề. Bạn phải sử dụng access_token của trang đích. Đây là cách bạn có được nó:
NSMutableDictionary *params = [NSMutableDictionary dictionaryWithObjectsAndKeys:
@"access_token", @"fields",
nil];
FBRequest *request = [facebook requestWithGraphPath:@"226338660793052" andParams:params andDelegate:self];
Khi bạn nhận được kết quả, sau đó bạn thêm nó vào giao dịch trên:
NSMutableDictionary *params = [NSMutableDictionary dictionaryWithObjectsAndKeys:
image, @"source",
[result objectForKey:@"access_token"], @"access_token",
facebookMessageTextView.text, @"message",
nil];
FBRequest *request = [facebook requestWithGraphPath:[[result objectForKey:@"id"] stringByAppendingString:@"/photos"] andParams:params andHttpMethod:@"POST" andDelegate:self];
Nhưng, điều này sẽ không làm việc vì Facebook.m sẽ thay thế này access_token mới với access_token người dùng mặc định, vì vậy tôi làm một sự thay đổi để Facebook.m khoảng dòng 166, từ:
if ([self isSessionValid]) {
[params setValue:self.accessToken forKey:@"access_token"];
}
tới:
if ([self isSessionValid]) {
if ([params valueForKey:@"access_token"] == nil)
[params setValue:self.accessToken forKey:@"access_token"];
}
Điều đó giữ mã truy cập bạn chỉ định làm một phần của các thông số, từ bị ghi đè bởi Facebook.accessToken. Bây giờ điều này sẽ đăng hình ảnh lên trang mà tôi quan tâm.
Tuy nhiên, điều này hoạt động vì tôi là quản trị viên trên trang được đề cập. Những người dùng khác sẽ không thể đăng ảnh và ảnh sẽ lại xuất hiện trong album của riêng họ, bởi vì cuộc gọi để nhận access_token cho trang sẽ trở lại không.
Theo tài liệu Facebook, nếu trang đó là không hạn chế, như trang này, sau đó chúng ta có thể để gửi một bức tranh với nó:
LƯU Ý:
Đối với các kết nối đòi hỏi mã thông báo truy cập, bạn có thể sử dụng bất kỳ mã thông báo truy cập hợp lệ nào nếu trang công khai và không bị hạn chế. Các kết nối trên các trang bị hạn chế yêu cầu mã thông báo truy cập của người dùng và chỉ hiển thị cho người dùng đáp ứng các tiêu chí hạn chế (ví dụ: tuổi) được đặt trên trang.
Tôi đã đề cập rằng trang của tôi là công khai và không bị hạn chế?
Trang truy cập Tokens
Để thực hiện các hoạt động sau đây như một trang, và không phải là người sử dụng hiện tại, bạn phải sử dụng thẻ truy cập của trang, không phải là người dùng truy cập thẻ thường được sử dụng cho việc đọc Graph Đối tượng API. Mã thông báo truy cập này có thể là được truy xuất bằng cách phát hành tài khoản HTTP GET đến/USER_ID/với quyền đối với manage_pages. Thao tác này sẽ trả về danh sách Trang (bao gồm trang tiểu sử ứng dụng) mà người dùng có quyền truy cập quản trị, cùng với access_tokens cho các Trang đó. Ngoài ra, bạn có thể nhận được mã thông báo truy cập trang cho một trang cụ thể, bằng cách phát hành quyền HTTP GET tới/PAGE_ID? Fields = access_token với quyền themanage_pages, như được mô tả ở trên. Xuất bản lên Trang cũng yêu cầu quyền publish_stream , trừ khi có ghi chú khác.
Vậy làm cách nào để đăng ảnh lên trang công khai/không bị giới hạn? Tôi có thể làm điều đó từ bất kỳ trình duyệt nào, vì vậy nó có thể, nhưng làm thế nào nó được thực hiện bằng cách sử dụng Graph API? Cho rằng tôi có thể đăng lên nguồn cấp dữ liệu mà không có shenanigans access_token, những gì về việc đăng một bức ảnh là khác nhau?
Tóm lại, những gì tôi đang cố gắng làm là đăng ảnh, không chỉ một URL hình thu nhỏ, đến trang công cộng/không bị giới hạn, sử dụng API đồ thị.
cố gắng để gửi vào album quy định sử dụng "ALBUM_ID/ảnh" – SVGreg
@mahboudz nếu sự giúp đỡ của bạn http://stackoverflow.com/a/6712526/1083859 –
@RA một tuần sau câu hỏi SO đó, vào ngày 22 tháng 7 năm 2011, điều này đã được Facebook công bố: https://developers.facebook.com/blog/post/526/: Tuần này, chúng tôi đã phát hành khả năng đính kèm ảnh Facebook hiện có từ album của người dùng bài đăng mới trên Tường của họ. Để thực hiện việc này, hãy phát hành một HTTP POST tới USER_ID/nguồn cấp dữ liệu với các tham số đối tượng Bài đăng. Bao gồm tham số object_attachment chỉ định ID ảnh của ảnh bạn muốn đính kèm vào bài đăng. Người dùng phải là chủ sở hữu của ảnh và ảnh không thể là một phần của tệp đính kèm tin nhắn. – mahboudz