菜鸟教程小白 发表于 2022-12-12 11:57:45

ios - FBRequest 不返回用户生日


                                            <p><p>我正在使用 Facebook SDK v.3.18.2</p>
<p>我只想要用户的名字、姓氏、电子邮件和<em>出生日期</em>,<strong>我得到了除了出生日期以外的所有内容</strong>。</p>
<p>我肯定做错了权限?不确定。</p>
<p>这里有一些代码可以帮助你找出我的问题,</p>
<pre><code>    allowLoginUI:YES completionHandler:
   ^(FBSession *session, FBSessionState state, NSError *error) {
         // Call the sessionStateChanged:state:error method to handle session state changes
         ;
   }];

// This method will handle ALL the session state changes in the app
- (void)sessionStateChanged:(FBSession *)session state:(FBSessionState) state error:(NSError   *)error
{
    // If the session was opened successfully
    if (!error &amp;&amp; state == FBSessionStateOpen){
      NSLog(@&#34;Session opened&#34;);
      if (FBSession.activeSession.isOpen) {

//            This is not working though I&#39;m putting it as comment
//            [ startWithCompletionHandler:
//             ^(FBRequestConnection *connection,
//               NSDictionary&lt;FBGraphUser&gt; *user,
//               NSError *error) {
//               if (!error) {
//                     NSLog(@&#34;User Info : %@&#34;,user);
//               }
//             }];
      
      [ startWithCompletionHandler:^(FBRequestConnection *connection, id result, NSError *error) {
            NSLog(@&#34;%@&#34;,result);
      }];
    }
    return;
}
</code></pre>
<p>这是输出日志:</p>
<pre><code>{
    email = &#34;email@domain&#34;;
    &#34;first_name&#34; = Hemang;
    gender = male;
    id = someId;
    &#34;last_name&#34; = Shah;
    link = &#34;https://www.facebook.com/app_scoped_user_id/someId/&#34;;
    locale = &#34;en_US&#34;;
    name = &#34;Hemang Shah&#34;;
    timezone = &#34;5.5&#34;;
    &#34;updated_time&#34; = &#34;some date and time&#34;;
    verified = 1;
}
</code></pre>
<p>但是出生日期不见了,我也在我的个人资料中设置了。</p>
<h1>更新:</h1>
<p>尝试使用以下权限<strong>不工作!</strong></p>
<p>"user_birthdate"或
“生日”</p></p>
                                    <br><hr><h1><strong>Best Answer-推荐答案</ strong></h1><br>
                                            <p><pre><code>
                                 allowLoginUI:YES
                              completionHandler:^(FBSession *session, FBSessionState state, NSError *error) {

                                  switch (state) {
                                    case FBSessionStateOpen:
                                          [ startWithCompletionHandler:^(FBRequestConnection *connection, NSDictionary&lt;FBGraphUser&gt; *user, NSError *error) {
                                              if (error) {

                                                NSLog(@&#34;error:%@&#34;,error);


                                              }
                                              else
                                              {
                                                // retrive user&#39;s details at here as shown below
                                                NSLog(@&#34;FB user first name:%@&#34;,user.first_name);
                                                NSLog(@&#34;FB user last name:%@&#34;,user.last_name);
                                                NSLog(@&#34;FB user birthday:%@&#34;,user.birthday);
                                                NSLog(@&#34;FB user location:%@&#34;,user.location);                                                      NSLog(@&#34;FB user gender:%@&#34;,);
                                                NSLog(@&#34;email id:%@&#34;,);
                                                NSLog(@&#34;location:%@&#34;, [NSString stringWithFormat:@&#34;Location: %@\n\n&#34;,
                                                                         user.location[@&#34;name&#34;]]);

                                              }
                                          }];
                                          break;

                                    case FBSessionStateClosed:
                                    case FBSessionStateClosedLoginFailed:
                                          ;
                                          break;

                                    default:
                                          break;
                                  }

                              } ];
</code></pre>

<p>需要引用:<a href="https://developers.facebook.com/docs/facebook-login/ios/v2.0#permissions" rel="noreferrer noopener nofollow">use this link</a> </p>

<p>控制台输出为:<img src="/image/0jIcv.png" alt="enter image description here"/> </p>

<p>我附上了示例项目并检查了 <code>- (IBAction)loginwithCustomButaction:(id)sender</code> <a href="https://www.sendspace.com/file/ujrrgp" rel="noreferrer noopener nofollow">the project link</a> </p></p>
                                   
                                                <p style="font-size: 20px;">关于ios - FBRequest 不返回用户生日,我们在Stack Overflow上找到一个类似的问题:
                                                        <a href="https://stackoverflow.com/questions/26139090/" rel="noreferrer noopener nofollow" style="color: red;">
                                                                https://stackoverflow.com/questions/26139090/
                                                        </a>
                                                </p>
                                       
页: [1]
查看完整版本: ios - FBRequest 不返回用户生日