Viblo CTF
+1

Facebook SDK - How to get permission and pass apple review

1. Giới thiệu

Chào các bạn ở bài trước mình đã trình bày làm thế nào để tích hợp và sử dụng Facebook SDK vào một iOS project. (Xem chi tiết qua link : https://viblo.asia/HoangLS/posts/oaKYMNAzR83E)

Hôm nay mình xin trình bày thêm làm thế nào để xin quyền facebook và lấy các thông tin của người dùng như: danh sách bạn bè, ngày sinh, danh sách các trang đã thích, địa chỉ .v.v.

Và hơn nữa là các vấn đề cần chú ý khi bạn muốn login ứng dụng bằng tài khoản facebook.

2. Thông tin người dùng facebook

2.1 Các thông tin cơ bản

Screen Shot 2015-10-29 at 9.17.03 AM.png

Khi bạn login vào ứng dụng bằng tài khoản facebook thì bạn mặc định truy suất 3 thông tin cơ bản của người dùng:

  • email: email đăng ký facebook
  • public_profile : tên, ảnh đại diện, giới tính và khoảng tuổi.
  • user_friends: Danh sách bạn bè cùng sử dụng ứng dụng

2.2 Các thông tin cần phải xin quyền

Nếu bạn login ứng dụng bằng tài khoản facebook và muốn lấy các thông tin ngoài các thông tin mặc định thì bạn cần phải xin cấp quyền từ facebook.

Việc cấp quyền thường sẽ kéo dài đến 7 ngày. Một số thông tin nhạy cảm có thể làm thời gian xin quyền kéo dài đến 14 ngày.

Tuy nhiên hiện nay theo thực tế làm app thì việc xin quyền thường kéo dài 2-3 ngày. (Mình chưa từng làm app cần xin quyền đặc biệt nhạy cảm nên chưa rõ về việc xin quyền này)

Danh sách các thông tin cần phải xin quyền (trừ 3 thông tin đầu tiên là mặc định):

Screen Shot 2015-10-29 at 9.25.35 AM.png

3. Xin cấp quyền truy xuất thông tin

Để có quyền truy xuất thông tin (ngoài 3 thông tin mặc định). Bạn cần phải thực hiện các bước sau:

3.1 Thêm các thông tin bạn cần truy xuất vào "review Item"

Screen Shot 2015-10-29 at 9.33.33 AM.png

Screen Shot 2015-10-29 at 9.34.37 AM.png

3.2 Truy xuất thông tin khi login vào ứng dụng

Nếu bạn dùng Login Button:

FBSDKLoginButton *loginButton = [[FBSDKLoginButton alloc] init];
loginButton.readPermissions = @[@”email”, @”user_friends”];

Nếu bạn dùng Login Manager:

- (void)viewDidLoad {
  [super viewDidLoad];
    if ([FBSDKAccessToken currentAccessToken]) {
       // TODO:Token is already available.
    }
}
// ....
FBSDKLoginManager *loginManager = [[FBSDKLoginManager alloc] init];
[loginManager logInWithReadPermissions:@[@"email"]
                    fromViewController:self
                               handler:^(FBSDKLoginManagerLoginResult *result, NSError *error) {
  //TODO: process error or result
 }];

3.3 Upload ứng dụng để xin quyền từ facebook

Để được facebook cấp quyền cho tất cả các thông tin bạn đã yêu cầu. Bạn cần làm theo các bước sau:

  • Login bằng chính tài khoản facebook bạn đã tạo app và đã xin quyền
  • Kiểm tra lại thông tin bạn đã xin quyền (khi bạn login bằng tài khoản bạn đã đăng ký app bạn có thể lấy được tất cả các quyền từ facebook mà không cần xin quyền)
  • Giải thích cho facebook mục đích và vị trí (trên giao diện nếu có) bạn sử dụng các thông tin trên (viết vào note khi bạn thêm review Items)
  • Cài đặt ứng dụng vào máy và test các chức năng bạn đã xin quyền vài lần (nếu không khi bạn xin quyền facebook sẽ báo là ứng dụng của bạn không dùng đến thông tin xin cấp quyền)
  • Build file ipa và upload lên facebook developer (bạn có thể build bằng bất kỳ provisioning nào facebook sẽ re-build bằng prosivionning của họ)
  • Chờ đợi

4. Các vấn đề khi tải ứng dụng đăng nhập bằng facebook lên Appstore

Nếu bạn muốn người dùng đăng nhập bằng facebook vào ứng dụng của bạn thì bạn cần chú ý những điều sau đây để tránh việc upload lại nhiều lần (vì kiều gì cũng bị reject):

  • Meta Data: facebook chỉ cho phép người dùng trên 16 tuổi đăng ký tài khoản, chính vì vậy nếu bạn không có phần login riêng cho app thì khi khai báo rating app bạn nên để là 16+ (mặc dù đã có app để 4+ vẫn pass)
  • Phải đảm bảo việc login thành công trên các version iOS mà ứng dụng bạn hỗ trợ (đặc biệt là các hệ điều hành vừa mới ra lò - như hiện tại là iOS 9.0 , 9.1 ...)
  • Apple sẽ yêu cầu bạn sử dụng thông facebook như một chức năng của ứng dụng (đây là pầhn yêu cầu mới và khá khó hiểu). Ví dụ : bạn phải thêm chức năng hiển thị số bạn chung giữa 2 user, thêm chức năng hiển thị profile của người dùng gồm: ngày sinh, email ... Việc này sẽ tốn khá nhiều thời gian cho bạn nếu bạn không chứng minh được ứng dụng cuẩ bạn thực sự cần thiết phải đăng nhập bằng facebook.

5. Tổng kết

Các ứng dụng bắt buộc login bằng facebook ra lò ngày một nhiều, chính vì vậy thông tin cá nhân của người dùng gần như bị sử dụng công khai hơn. Có thể chính vì vấn đề này nên Apple và Facebook đang dần có cơ chế review chặt chẽ và khắt khe hơn với các ứng dụng mới. Việc bạn bắt buộc người dùng login ứng dụng bằng facebook sẽ gây khó khăn cho bạn trong việc xin quyền và kiểm thử từ facebook và Apple.

Chính vì vậy bạn cần cân nhắc kỹ lưỡng trước khi quyết định sử dụng facebook để login ứng dụng.

Chúc bạn may mắn !!!!!


All Rights Reserved