菜鸟教程小白 发表于 2022-12-12 16:53:14

ios - 适用于 iOS 的 Facebook SDK,fbDidLogin 从未在多 Nib 应用程序中调用


                                            <p><p>这是我第一次发帖,因为我通常只是来研究问题,但我自己无法弄清楚。</p>

<p>基本上,我的问题与使用 iOS 版 facebook sdk 的其他开发人员类似,即使我登录后我的 fbDidLogin 函数也不会被调用,并且可以使我的帖子成功提供。我在这里查看了其他线程,例如 <a href="https://stackoverflow.com/questions/4215797/fbdidlogin-never-called-facebook-ios-sdk" rel="noreferrer noopener nofollow">fbDidLogin never called (facebook-ios-sdk)</a>和 <a href="https://stackoverflow.com/questions/4244609/fbdidlogin-not-called" rel="noreferrer noopener nofollow">fbDidLogin not called</a> ,但是我没有成功。我的应用程序有一个加载的主视图,按下按钮后它会拉入第二个 Nib 并替换 View 。第二个 ViewController 在那里有 facebook 功能,我觉得我的问题可能是从 Appdelegate 连接到那个 secondViewController。我在示例应用程序中注意到,所有内容都在 appdelegate 中设置,但这不是我的程序运行的方式。</p>

<p>我是 Objective c 编程的新手,但到目前为止,我在构建一些应用程序方面做得很好,只是这个 facebook sdk 让我很生气。</p>

<p>我很欣赏人们可以向我提出的任何方向。谢谢。</p>

<p>以下是部分代码:</p>

<pre><code>- (void)login {
    facebook=[initWithAppId:FB_APP_ID];
    NSLog(@&#34;Inside login/post to wall function.&#34;);
    NSMutableDictionary* params = [NSMutableDictionary dictionaryWithObjectsAndKeys:
                                       @&#34;mystuff&#34;,@&#34;test&#34;,
                                       @&#34;mystuff&#34;, @&#34;link&#34;,
                                       @&#34;mystuff&#34;, @&#34;picture&#34;,
                                       mystuff, @&#34;name&#34;,
                                       @&#34;mystuff&#34;, @&#34;caption&#34;,
                                       @&#34;mystuff&#34;, @&#34;description&#34;,
                                       @&#34;mystuff&#34;,@&#34;message&#34;,
                                       nil];
    ;
}

/**
* Invalidate the access token and clear the cookie.
*/
- (void)logout {
    ;
}

/**
* Called when the user has logged in successfully.
*/
-(void)fbDidLogin{
    NSLog(@&#34;Inside fbDidLogin function.&#34;);
}

/**
* Called when the user canceled the authorization dialog.
*/
-(void)fbDidNotLogin:(BOOL)cancelled {
    NSLog(@&#34;User did not login.&#34;);
}
</code></pre></p>
                                    <br><hr><h1><strong>Best Answer-推荐答案</ strong></h1><br>
                                            <p><p>这里的问题是,一旦授权过程完成,您的代表就不再存在了。我将创建一个实现 FBSessionDelegate 的类,并将其作为您的应用程序委托(delegate)的属性。现在,当您连接代理时,将其设置为该属性。如果您愿意,您也可以使用界面构建器将其连接起来。只需将委托(delegate)设置为您在应用委托(delegate)上定义的属性。</p>

<p>例如,您可以有一个执行以下操作的类(此代码涵盖了其中的 80% - 希望它能让您走上正确的轨道):</p>

<pre><code>typedef void (^completionHandler)(id);

@interface FacebookController : NSObject &lt;FBSessionDelegate&gt;
{
    completionHandler handler;
}

- (void)postToWallWithOptions:(NSDictionary *)options;
- (void)login:(completionHandler)handler;
- (void)fbDidLogin;
</code></pre>

<p>而实现是:</p>

<pre><code>@implementation FacebookController

- (void)postToWallWithOptions:(NSDictionary *)options
{
    completionHandler handler = ^(id data)
      {
    // If you want this class to also be the delegate dialog, it will need to implement FBDialogDelegate
            [facebook dialog:@&#34;feed&#34;
                   andParams:options
               andDelegate:self];
      };
;
}

- (void)login:(completionHandler)handler
{
completionHandler = handler;
// Be sure to add in your permissions here
[facebook authorize:yourPermissions
               delegate:self];
}

- (void)fbDidLogin
{
// You could pass any object you needed to here
completionHandler(nil);
}

@end
</code></pre>

<p>您需要将此类定义为应用程序委托(delegate)的属性:</p>

<pre><code>@property (nonatomic, retain) FacebookController *fbController;
</code></pre>

<p>现在,当您需要 FacebookController 时,您只需这样做:</p>

<pre><code>FacebookController *fbController = [(MyAppDelegate *)[ delegate] fbController];
</code></pre></p>
                                   
                                                <p style="font-size: 20px;">关于ios - 适用于 iOS 的 Facebook SDK,fbDidLogin 从未在多 Nib 应用程序中调用,我们在Stack Overflow上找到一个类似的问题:
                                                        <a href="https://stackoverflow.com/questions/6901313/" rel="noreferrer noopener nofollow" style="color: red;">
                                                                https://stackoverflow.com/questions/6901313/
                                                        </a>
                                                </p>
                                       
页: [1]
查看完整版本: ios - 适用于 iOS 的 Facebook SDK,fbDidLogin 从未在多 Nib 应用程序中调用