请求facebook v2.2 api与scribe进行授权

时间:2015-01-06 09:14:19

标签: java facebook facebook-graph-api scribe

facebook api v1.0将于2015年4月30日到期: https://developers.facebook.com/docs/apps/changelog

我们正在使用scribe(目前的版本1.3.6)通过Facebook登录。我们需要更新到Facebook api v2.2,或者晚于v1.0

scribe是否支持与facebook api v2.2的连接?

如果我查看发送给用户的生成的URL, v1.0版本: https://www.facebook.com/dialog/oauth?client_id=12345678901&redirect_uri=http%3A%2F%2Flocalhost%3A8080%2Findex.facebookoauthconnect%3Aauthorize&scope=email%2Cuser_birthday

如果我理解正确,我通过包含/v2.2/连接到v2.2 api,如下所示 v2.2版本(?): ... facebook.com/v2.2/dialog /...

这是对的吗?至少这适用于我们的场景。

facebook的网址定义如下: org.scribe.builder.api.FacebookApi 并且在代码中不会被操纵,因此我认为scribe仅支持v1.0 facebook api。这是对的吗?

是否足以将/v2.2/插入自己的url以连接到v2.2 api?

亲切的问候 大卫

1 个答案:

答案 0 :(得分:0)

注意:我从不使用Scribe,因为我有自己的内部库

Facebook上的OAuth授权流程没有改变,它只是API。因此,您的请求路径不会在/{object}/上(如果使用的是Facebook v1.0),而是附加/v2.2/{object}/

Scribe库只允许您更轻松地向服务提供商执行OAuth。 没有链接到任何服务提供商特定的API,因此您可以随意更改API请求路径。

您需要参考最新的Graph API reference doc

示例:

// getting user profile
OAuthService service = new ServiceBuilder()
                                  .provider(FacebookApi.class)
                                  .apiKey(YOUR_API_KEY)
                                  .apiSecret(YOUR_API_SECRET)
                                  .build();
OAuthService service = facebookServiceProvider.getService();
OAuthRequest oauthRequest = new OAuthRequest(Verb.GET, "https://graph.facebook.com/v2.2/me"); //See how this link is appended with v2.2 path!!!
service.signRequest(accessToken, oauthRequest);
Response oauthResponse = oauthRequest.send();
System.out.println(oauthResponse.getBody()); 

我建议学习upgrading changes from Graph v2.1 to Graph v2.2。您不必担心身份验证过程,而是图URL。