菜鸟教程小白 发表于 2022-12-11 19:02:31

ios - react 原生 - fbsdk LoginManager 与 LoginButton


                                            <p><p>我目前正在我的 reactnative 应用程序中实现一个 Facebook 登录按钮。用户成功登录后,我会获取一些信息,名字、姓氏和电子邮件地址。</p>

<p>阅读 SDK 文档和在线示例后,我可以看到实现此目的的两种不同方法:</p>

<ol>
<li><p>使用 LoginButton 和 AccessToken 然后执行 GraphRequest</p></li>
<li><p>使用 LoginManager 然后执行 GraphRequest(我选择的方法):</p>

<pre><code>class LoginView extends Component {
    _fbAuth = () =&gt; {
      LoginManager.logInWithReadPermissions([&#39;public_profile&#39;,&#39;email&#39;]).then(function(result){
            if(result.isCancelled){
                console.log(&#39;loging cancelled&#39;)
            }
            else {
                console.log(&#39;login success&#39; + result.grantedPermissions)

                const infoRequest = new GraphRequest(&#39;/me&#39;, {
                  parameters: {
                        &#39;fields&#39;: {
                            &#39;string&#39; : &#39;email,first_name,last_name,picture&#39;
                        }
                  }
                }, (err, res) =&gt; {
                  console.log(err, res);
                });
                new GraphRequestManager().addRequest(infoRequest).start();

            }
      }, function(error){
            console.log(&#39;An error occured: &#39; + error)
      })
    }

    render(){
      return (
            &lt;TouchableHighlight style={{flex:1}} onPress={() =&gt; {this._fbAuth()}}&gt;
                &lt;View style={styles.container}&gt;
                  &lt;View style={styles.buttonContainer}&gt;
                        &lt;Text style={{flex:1}}&gt;Login with Facebook&lt;/Text&gt;
                  &lt;/View&gt;
                &lt;/View&gt;
            &lt;/TouchableHighlight&gt;
      )
    }
}
</code></pre> </li>
</ol>

<p>LoginManager 和 LoginButton 的主要区别是什么?</p>

<p>LoginButton的在线示例也获取当前token:<code>AccessToken.getCurrentAccessToken().then(...)</code></p>

<p>通过 LoginManager,我无需使用 AccessToken 就可以获取用户信息 - LoginManager 是否在后台调用 AccessToken?</p>

<p>有首选方法吗?</p></p>
                                    <br><hr><h1><strong>Best Answer-推荐答案</ strong></h1><br>
                                            <p><p>我的理解是</p>

<p>当你使用 <strong>LoginButton & AccessToken 然后做一个 GraphRequest</strong></p>

<p>因此,您需要检查您的 AccessToken 是否为 nil 或您的 currentToken 是否有效,如果您有 accessToken 则无需单击 Facebook 按钮或登录按钮即可直接获取数据。因此,这意味着如果您不执行注销方法或卸载应用程序,您仍然可以通过使用 Graph Request 的 accessToken 来获取数据。</p>

<p>现在,当您使用 <strong>LoginManager 然后执行 GraphRequest</strong></p>

<p>因此,这种方法每次都将您带到 Safari 以进行 facebook 应用程序的自动化过程。 LoginManager 通常每次在 Safari 中打开 Facebook,然后返回应用程序并提供数据。</p>

<p>希望你能理解。<br/>
谢谢</p></p>
                                   
                                                <p style="font-size: 20px;">关于ios -react 原生 - fbsdk LoginManager 与 LoginButton,我们在Stack Overflow上找到一个类似的问题:
                                                        <a href="https://stackoverflow.com/questions/42356980/" rel="noreferrer noopener nofollow" style="color: red;">
                                                                https://stackoverflow.com/questions/42356980/
                                                        </a>
                                                </p>
                                       
页: [1]
查看完整版本: ios - react 原生 - fbsdk LoginManager 与 LoginButton