Tôi vừa mới nâng cấp này cho ứng dụng của mình. Lý do của tôi để làm cho nó là dòng chảy mượt mà hơn cho iOS 6 và hỗ trợ trong tương lai cho facebook vì họ sẽ cuối cùng không dùng nữa sdk cũ. Những thay đổi lớn là luồng đăng nhập và mở các cuộc gọi đồ thị. Hộp thoại gọi để đăng trên tường của bạn vẫn heo con trở lại các tiêu đề không dùng nữa. Đối với những phương pháp bạn đang quan tâm đến việc họ sẽ được thay thế như sau:
[ad.facebook ủy quyền: perms]
FBSession *session = [[FBSession alloc] initWithAppID:appId
permissions:permissionsArray
urlSchemeSuffix:urlSuffix
tokenCacheStrategy:nil];
[FBSession setActiveSession:session];
if(allowLoginUI == YES)
{
[session openWithBehavior:FBSessionLoginBehaviorUseSystemAccountIfPresent completionHandler:handler];
}
else if(session.state == FBSessionStateCreatedTokenLoaded)
{
[session openWithCompletionHandler:^(FBSession *_session, FBSessionState status, NSError *error) {
[self _sessionStateChanged:_session state:status error:error];
}];
}
[session release];
thấy để được hướng dẫn thực hiện bổ sung về đăng nhập
https://developers.facebook.com/docs/howtos/share-appid-across-multiple-apps-ios-sdk/
https://developers.facebook.com/docs/howtos/login-with-facebook-using-ios-sdk/
shouldExtendAccessToken, extendAccessTokenIfNeeded, - những thứ này đã biến mất và SDK SDK thực hiện ments bộ nhớ đệm và mở rộng các mã thông báo nếu cần thiết. Nếu bạn nhìn thấy trong đoạn mã đầu tiên của tôi nếu loginUI không phải là để hiển thị, nhưng trạng thái phiên là trong FBSessionStateCreatedTokenLoaded, bạn vẫn muốn mở phiên. Khi phiên của bạn ở trạng thái FBSessionStateCreatedTokenLoaded, có nghĩa là:
Một trong hai trạng thái phiên ban đầu cho biết rằng mã thông báo được lưu trong bộ nhớ cache là được tải; khi một phiên là trong trạng thái này, một cuộc gọi để mở * sẽ cho kết quả trong một phiên mở, mà không UX hoặc chuyển đổi ứng dụng
thanh toán các SessionLoginSample để biết thêm.
isSessionValid - đây tại là
FBSession.activeSession.isOpen
thoại: @ "thức ăn" andParams: params andDelegate: ủy - đây là vẫn như nhau, tuy nhiên bạn phải tạo ra các ví dụ facebook như thế này trước khi sử dụng nó:
Facebook *facebook = [[Facebook alloc] initWithAppId:FBSession.activeSession.appID andDelegate:nil];
facebook.accessToken = FBSession.activeSession.accessToken;
facebook.expirationDate = FBSession.activeSession.expirationDate;
//... normal code to setup a feed post
[facebook dialog:@"feed" andParams:params andDelegate:self];
[facebook release];
thấy https://developers.facebook.com/docs/howtos/feed-dialog-using-ios-sdk/ để biết thêm
"https://graph.facebook.com/me?fields=id,email,first_name & access_token =", - Các cuộc gọi đồ thị giờ đây đơn giản hơn rất nhiều. Bạn cũng có thể ghép chúng lại với nhau khá dễ dàng.
//[facebook requestWithGraphPath:@"me" andDelegate:self]; would become
[FBRequestConnection startForMeWithCompletionHandler:^
(FBRequestConnection *connection, id result, NSError *error) {}];
//[facebook requestWithGraphPath:@"me/albums" andParams:params andHttpMethod:@"POST" andDelegate:self]; would become
[FBRequestConnection startWithGraphPath:@"me/albums"
parameters:params
HTTPMethod:@"POST"
completionHandler:^(FBRequestConnection *connection, id result, NSError *error) {}];
thấy https://developers.facebook.com/docs/howtos/batch-requests-ios-sdk/ để biết thêm
THANKS cho phản hồi chu đáo và chi tiết - rất hữu ích. Khi tôi có cơ hội xác thực những điều này, tôi sẽ đảm bảo đánh dấu đây là phản hồi chính xác. cảm ơn một lần nữa. – leontx
Chỉ cần tò mò như tôi phải làm công việc này chính xác và tôi đã tự hỏi phải mất bao lâu để tôi có thể đưa ra một ước tính phong nha. Cảm ơn –
@JonathanDixon không lâu có lẽ 2-3 giờ. SDK mới vẫn bao gồm TẤT CẢ SDK cũ để bạn có thể tấn công dự án này theo từng phần. Chỉ cần thay thế những gì bạn cần và để phần còn lại sử dụng hệ thống cũ. Sau đó, từ từ nâng cấp. – odyth