菜鸟教程小白 发表于 2022-12-12 09:30:27

java - Spring FacebookTemplate 引发用户配置文件的权限异常


                                            <p><p>我无法使用在 iOS 客户端上从后端服务获得的 token 继续 OAuthsession 。具体来说,它看起来是一个权限问题:</p>

<p><strong>iOS客户端获取访问 token (ObjC/FB iOS SDK v3.24)</strong></p>

<p>使用以下权限建立的 session :</p>

<pre><code>[FBSession openActiveSessionWithReadPermissions:@[
                @&#34;email&#34;,
                @&#34;user_about_me&#34;,
                @&#34;user_friends&#34;,
                @&#34;user_birthday&#34;,
                @&#34;public_profile&#34; . . .
</code></pre>

<p>完成后。 . . </p>

<pre><code>FBSession *session = ;
NSString *accessToken = ;
</code></pre>

<p><strong>访问 token 发送到后端(即 Spring Boot + Kotlin)</strong></p>

<p>一个Spring <code>FacebookTemplate</code>使用上面得到的token实例化,如下:</p>

<pre><code>@Test fun testFacebookTemplate()
{
    val facebook = FacebookTemplate(&#34;$$TOKEN_FROM_FACEBOOK_IOS_SDK$$&#34;)

    //Raises exception . .
    val profile = facebook.userOperations().userProfile
    println(&#34;Profile: &#34; + profile)
}
</code></pre>

<p>iOS客户端建立的OAuth session 从后端成功继续,例如可以返回Facebook好友列表。但是,如上所示,尝试检索配置文件会引发错误:</p>

<pre class="lang-none prettyprint-override"><code>Error from Facebook: {&#34;error&#34;:{&#34;message&#34;:&#34;(#3) Application does not have the capability to make this API call.&#34; , &#34;type&#34;:&#34;OAuthException&#34;,&#34;code&#34;:3,&#34;fbtrace_id&#34;:&#34;B4C+eS3n2PW&#34;}}
DEBUG o.s.s.f.a.impl.FacebookErrorHandler - Facebook error:
DEBUG o.s.s.f.a.impl.FacebookErrorHandler -    CODE      : 3
DEBUG o.s.s.f.a.impl.FacebookErrorHandler -    TYPE      : OAuthException
</code></pre>

<p><strong>问题:</strong></p>

<ul>
<li>缺少返回<a href="http://docs.spring.io/spring-social-facebook/docs/2.0.1.RELEASE/apidocs/org/springframework/social/facebook/api/User.html" rel="noreferrer noopener nofollow">User</a>的权限目的。这似乎没有记录在 Spring 的 <a href="http://docs.spring.io/spring-social-facebook/docs/2.0.1.RELEASE/apidocs/org/springframework/social/facebook/api/impl/FacebookTemplate.html" rel="noreferrer noopener nofollow">FacebookTemplate</a> 中。 </li>
<li>这是在 OAuth 身份验证/授权期间(在我的情况下使用 FB iOS SDK)还是通过开发者控制台请求的?这对我来说不清楚,因为 openActiveSessionWithPermissions 和 Facebook 的 Web 控制台中的应用程序定义都包含对这些权限的引用。 </li>
</ul></p>
                                    <br><hr><h1><strong>Best Answer-推荐答案</ strong></h1><br>
                                            <p><p>在针对 Facebook Graph API v2.3 调用用户配置文件请求时,Spring 的 FacebookTemplate v2.0.2.RELEASE 似乎出现了一些权限相关的错误</p>

<p>作为一种变通方法使用:</p>

<pre><code>val profile = facebook.fetchObject(&#34;me&#34;, User::class.java,
    &#34;id&#34;, &#34;first_name&#34;, &#34;last_name&#34;, &#34;email&#34;);
</code></pre></p>
                                   
                                                <p style="font-size: 20px;">关于java - Spring FacebookTemplate 引发用户配置文件的权限异常,我们在Stack Overflow上找到一个类似的问题:
                                                        <a href="https://stackoverflow.com/questions/33302582/" rel="noreferrer noopener nofollow" style="color: red;">
                                                                https://stackoverflow.com/questions/33302582/
                                                        </a>
                                                </p>
                                       
页: [1]
查看完整版本: java - Spring FacebookTemplate 引发用户配置文件的权限异常