首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >restFB: Facebook登录重定向

restFB: Facebook登录重定向
EN

Stack Overflow用户
提问于 2013-10-31 07:06:41
回答 3查看 3.3K关注 0票数 0

我试着要求

https://graph.facebook.com/oauth/authorize?client_id=MY_API_KEY& redirect_uri=http://www.facebook.com/connect/login_success.html&scope=publish_stream,create_event

但是在重定向之后我得到了一个错误:

“请求的URL /login.php?login_attempt=1&next=https%3A%2F%2Fwww.facebook....”

login.php是从哪里来的,那不是重定向页面吗?!

重定向的问题是什么?

谢谢!

EN

回答 3

Stack Overflow用户

发布于 2013-10-31 16:49:44

redirect_uri应该是你的服务器上的一个网址,在他/她授予你访问他/她的受保护资源的权限后,facebook将重定向用户。在那里,您应该使用服务器端fetch将请求令牌--从facebook返回的code查询字符串参数的值--交换为access_token

redirect_uri必须与网站上的站点URL设置位于相同的域中,并且在https://developers.facebook.com/apps/{your-app-id}/summary/的Facebook应用程序设置中包含facebook登录

  1. 将用户重定向到provider

将用户重定向到提供商,以便他/她可以告诉提供商,他/她将为您提供对其在scope中指定的受保护资源的访问权限。在用户同意或拒绝后,提供商会将用户重定向到您服务器上的redirect_uri。为了防止跨站点脚本请求伪造,您应该生成并存储一个CSRF令牌,并将其与请求一起发送。

代码语言:javascript
复制
https://www.facebook.com/dialog/oauth?
    client_id={your-app-id}&
    redirect_uri=http://your-site.com/after-redirect&
    scope=list,of,scopes&
    state={a-hard-to-guess-random-csrf-token}

  1. 交换访问令牌

的请求令牌(代码)

http://your-site.com/after-redirect的请求处理程序中,您应该检查errorerror_message请求参数。如果没有错误,您应该首先验证state CSRF令牌(与存储的令牌相比较),如果有效,则使用服务器端fetch将code (请求令牌)交换为提供者的访问令牌redirect_urigrant_type=authorization_code参数是必需的(至少某些提供程序需要)。

代码语言:javascript
复制
https://graph.facebook.com/oauth/access_token?
    code={request-token}&
    client_id={your-app-id}&
    client_secret={your-app-secret}&
    redirect_uri=http://your-site.com/after-redirect&
    grant_type=authorization_code

  1. 使用访问令牌访问用户的受保护资源

如果令牌类型是bearer,那么您应该以Authorization: Bearer {access-token}'的形式在HTTP头中发送access_token。请参阅:https://www.rfc-editor.org/rfc/rfc6750#section-2.1

代码语言:javascript
复制
https://graph.facebook.com/me?
    fields=name,birthday,photos.limit(10).fields(id, picture)&
    access_token={access-token}
票数 4
EN

Stack Overflow用户

发布于 2013-10-31 13:08:40

尝试这样做:

代码语言:javascript
复制
     public String getOauthUrl(String clientId, String callbackUrl, String scope) {
     return "https://graph.facebook.com/oauth/authorize?client_id="
            + clientId + "&display=page&redirect_uri="
            + callbackUrl + "&scope=" + scope;
     }
票数 0
EN

Stack Overflow用户

发布于 2013-10-31 15:46:23

这是我使用的代码:

URL url2 = new URL("https://www.facebook.com/dialog/oauth?client_id=MY_APP_ID&redirect_uri=https://www.facebook.com/connect/login_success.html&scope=publish_stream,create_event");

URLConnection conn = url2.openConnection();

BufferedReader rd = new BufferedReader(new InputStreamReader(conn.getInputStream())); String test;

test=rd.readLine();

resp.getWriter().println(test);

rd.close();

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19695517

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档