web-dev-qa-db-ja.com

FBSDKLoginManager logInWithReadPermissions?

FBSDKLoginButtonを使用し、FacebookFBSDKLoginButton.readPermissions = @[@"public_profile",@"email",@"user_likes",@"email",@"user_birthday"];

許可を求めるために、私はFBSDKLoginManagerを使用する必要がありますpublish_actionsであるもう1つの許可が必要です

 logInWithReadPermissions:@[@"public_profile",@"user_likes",@"user_birthday"] 
logInWithPublishPermissions:@[@"publish_actions"]

しかし、これは何らかの理由で私の許可に影響します

コード:-

FBSDKLoginManager *login = [[FBSDKLoginManager alloc] init];
                [login logInWithPublishPermissions:@[@"publish_actions"] handler:^(FBSDKLoginManagerLoginResult *result, NSError *error) {
                    if (error) {
                        // Process error
                    } else if (result.isCancelled) {
                        // Handle cancellations
                    } else {
                        // If you ask for multiple permissions at once, you
                        // should check if specific permissions missing
                        if ([result.grantedPermissions containsObject:@"publish_actions"]) {
                            // Do work
                        }
                    }
                }];

[login logInWithReadPermissions:@[@"public_profile",@"",@"user_likes",@"user_birthday"] handler:^(FBSDKLoginManagerLoginResult *result, NSError *error) {
    if (error) {
        // Process error
    } else if (result.isCancelled) {
        // Handle cancellations
    } else {
        // If you ask for multiple permissions at once, you
        // should check if specific permissions missing
        if ([result.grantedPermissions containsObject:@"email"]) {
            // Do work
        }
    }
}];

結果:-

**ユーザーを権限ビューにリダイレクトするには時間がかかりますか?ユーザーにすべての許可が表示されるわけではありません**

enter image description here

注:-警告は、レビューのためにアプリを送信する必要があることを知っていますが、これは私が今尋ねていることではありません。

更新

「Dheeraj Singh」ソリューションを試したが、この場合、ユーザーは最初にpublish_actionを取得するためにFacebookに2回リダイレクトされ、次に電子メールと誕生日の許可を取得します。これは悪いです。

19
Omarj

Facebook Loginを使用すると、アプリはユーザーの公開プロフィール、友達リスト、メールアドレスにアクセスできます。これらの3つの権限は確認する必要はありません。代わりに、アプリのユーザーは、この情報へのアクセスを許可するかどうかを選択します。

アプリがユーザーのFacebookプロフィールの追加要素にアクセスする(読み取りアクセス許可)か、Facebookに代わってコンテンツをFacebookに公開する(書き込みアクセス許可)には、レビューのために送信する必要があります。

参照: https://developers.facebook.com/docs/apps/review#submitlogin

更新済み:

アプリは、読み取り許可と公開許可のリクエストを分離する必要があります。

 FBSDKLoginManager *login = [[FBSDKLoginManager alloc] init];

    [login logInWithPublishPermissions:@[@"publish_actions"] handler:^(FBSDKLoginManagerLoginResult *result, NSError *error) {
        if (error) {
            // Process error
        } else if (result.isCancelled) {
            // Handle cancellations
        } else {
            // If you ask for multiple permissions at once, you
            // should check if specific permissions missing
            if ([result.grantedPermissions containsObject:@"publish_actions"]) {
                // Do work

                [login logInWithReadPermissions:@[@"user_likes",@"user_birthday"] handler:^(FBSDKLoginManagerLoginResult *result, NSError *error) {
                    if (error) {
                        // Process error
                    } else if (result.isCancelled) {
                        // Handle cancellations
                    } else {
                        // If you ask for multiple permissions at once, you
                        // should check if specific permissions missing
                        if ([result.grantedPermissions containsObject:@"user_birthday"]) {
                            // Do work

                            NSLog(@"Permission  2: %@",result.grantedPermissions);
                        }
                    }
                }];

            }
        }
    }];

Publish_actionsへのアクセス許可が付与されている場合、public_profileのアクセス許可も取得されるため、読み取りアクセス許可にpublic_profileは必要ありません。

12
Dheeraj Singh

私が見たように、「user_likes」、「user_birthday」、「public_profile」および「publish_actions」権限。

2015年5月1日から、facebookは「public_profile」、「email」、および「user_friends」は承認プロセスなしで利用できます。

user_likes」、「user_birthday」および「publish_actionsfacebookから承認を得る必要があります。

レビュープロセスについては、 Facebook Review からヘルプを得ることができます。

6
V.J.

私も2週間user_posts権限で同じ問題を抱えていますが、いくつかの検索の後、この解決策を見つけました、まだこの問題がある場合はこれらの手順に従ってください

  1. http://developers.facebook.com に移動し、開発者アカウントにログインします。
  2. アプリを選択して、[役割]セクションに移動します。
  3. [テスター]セクションにテスターを追加します。
  4. 次に、アプリを再インストールし、そのテスターアカウントを使用してログインします。
  5. テスターから必要な許可を取得しようとすると、テスターはすべての許可リストを確認します。
4
Waris Shams
var login = FBSDKLoginManager()


@IBAction func fbBtnPressed(_ sender: AnyObject) {

    login.logIn(withReadPermissions: ["email"], from: self) { (FBSDKLoginManagerLoginResult, Error) in

        if Error != nil {
            print("O Login via Facebook Falhou. Erro: \(Error)")
        } else {
            let accessToken = FBSDKAccessToken.current().tokenString
            self.gotoScreen() //Function for screen after login succesfull 
            print("Acesso concedido ao Facebook. \(accessToken)")
        }

    }

}
1
Ewerson