标签: facebook-oauth

如何强制OAuth对话框重新提示用户权限(即使已授予)

如果用户先前已批准访问该应用程序并提供了所有权限,则facebook OAuth对话框会重定向回提供的redirect_uri,而不会提示用户...

我想覆盖该行为,并强制对话框再次询问用户权限...

不知道是否可以做到这一点,因为文档没有提供关于这样做是否可行的帮助。

facebook oauth facebook-oauth

5
推荐指数
1
解决办法
5374
查看次数

Facebook JS SDK:在iframe中显示oAuth对话框

我试图在我的iframe应用程序中显示一个Facebook UI对话框,以便我可以获得我们目前没有的扩展权限.使用旧的SDK很容易实现这一点.但是,使用新库,我得到一个模态显示的Facebook iframe对话框,但永远不会停止加载.将方法更改为"页面"意味着我得到一个弹出窗口,只显示"发生错误".我的代码如下:

var attachment = {
    display: 'iframe',
    method: 'oauth',
    scope: perms,
    access_token: '<?php echo $this->accessToken; ?>' // this is definitely valid access token         
};
FB.ui(attachment, function(response){
    pr(response);
});
Run Code Online (Sandbox Code Playgroud)

我希望这可以使用新的SDK,文档肯定声明iframe是一个有效的显示参数.

提前致谢.

G

facebook facebook-javascript-sdk facebook-oauth

5
推荐指数
1
解决办法
4620
查看次数

应用程序域:不是有效的域。网站 URL 不是有效的 URL

我在http://qotr.net上有一个域,我正在尝试将其设置为应用程序,以便可以使用 OAuth。它在几周前建立的,我们刚刚在我们的应用程序上实现了 OAuth 钩子,当时 Facebook 开始给我们错误。

现在,当我进入设置页面并编辑任何内容时,我得到:

错误应用域:qotr.net 不是有效域。站点 URL 不是有效的 URL。

我有:qotr.net对于应用程序域和http://qotr.net站点 url。

http://developers.facebook.com/tools/debug/og/object?q=http%3A%2F%2Fqotr.net

告诉我它无法解析 qotr.net。该站点显然已启动并可使用,并且 Google OAuth 有效。

我在网上找不到任何关于为什么它可能无法正确解析的信息;有任何想法吗?

dns facebook-oauth

5
推荐指数
1
解决办法
1万
查看次数

如何从Facebook Graph API(服务器端身份验证)获得长期访问令牌?

由于Facebook正在删除offline_access权限,我想继续迁移我们的网站以使用新系统.

我在Facebook的网站上找到了这个文件:https: //developers.facebook.com/roadmap/offline-access-removal

但是,当我使用服务器端身份验证处理某人时,我收到此响应:

access_token => BLAHBLAHBLAHdontusemytokensilly
expires => 4992
Run Code Online (Sandbox Code Playgroud)

当我尝试使用访问点(在该文档上)来扩展访问令牌超过几个小时时,我得到了回复:

access_token => BLAHBLAHBLAHdontusemytokensilly
expires => 4990
Run Code Online (Sandbox Code Playgroud)

根据该文档,服务器端OAuth应该获得一个持续60天的令牌,我不明白为什么我没有得到它.

我真的不想每2小时通过OAuth重定向发送我们的用户.

有任何想法吗?谢谢!

UPDATE

根据要求,这是我正在采取的流程(在浏览器中):

首先,我在这里重定向用户:

https://www.facebook.com/dialog/oauth?client_id=BLAHBLAH&redirect_uri=http%3A//localhost/user-social/facebook/redirect&scope=user_about_me%2Cuser_events%2Cuser_interests%2Cuser_likes%2Cfriends_likes%2Cuser_location%2Cuser_status%2Cuser_subscriptions%2Cfriends_subscriptions %2Cemail%2Ccreate_event%2Cpublish_stream%2Crsvp_event%2Cpublish_actions%2Cuser_actions.music%2Cfriends_actions.music%2Cuser_actions.news%2Cfriends_actions.news%2Cuser_actions.video%2Cfriends_actions.video%2Cmanage_pages

这会将用户重定向到此处:

http://localhost/user-social/facebook/redirect?code=BLAHBLAHBLAHsomeawesomecode#_=_
Run Code Online (Sandbox Code Playgroud)

然后我请求了一个访问令牌,如下所示:

https://graph.facebook.com/oauth/access_token?client_id=BLAHBLAH&redirect_uri=http%3A//localhost/user-social/facebook/redirect&client_secret=BLAHBLAHsomeawesomesecret&code=BLAHBLAHBLAHsomeawesomecode

我从Facebook收到这个休息:

access_token=BLAHBLAHBLAHdontusemytokensilly&expires=4057
Run Code Online (Sandbox Code Playgroud)

这显然是一个短命的令牌.根据Facebook文档(上文),我应该收到一个长期存在的令牌(因为我使用的是服务器端OAuth).

但是,由于它是短暂的,我试图将它换成一个长期存在的令牌:

https://graph.facebook.com/oauth/access_token?client_id=BLAHBLAH&redirect_uri=http%3A//localhost/user-social/facebook/redirect&client_secret=BLAHBLAHsomeawesomesecret&grant_type=fb_exchange_token&fb_exchange_token=BLAHBLAHBLAHdontusemytokensilly

这是Facebook返回的内容:

access_token=BLAHBLAHBLAHdontusemytokensilly&expires=3967
Run Code Online (Sandbox Code Playgroud)

两个请求中都返回相同的access_token.

更新2

我将上面的访问令牌放入Facebook调试器中,这就是它返回的内容:

App ID: 
BLAHBLAH
User ID:    
211800900 : David Barratt
Issued: 
Unknown
Expires:    
1347303600 (in 40 minutes)
Valid:  True
Origin: Web
Scopes: create_event create_note email friends_actions.music friends_actions.news friends_actions.video friends_likes friends_subscriptions manage_pages photo_upload publish_actions publish_stream rsvp_event share_item status_update user_about_me …
Run Code Online (Sandbox Code Playgroud)

facebook oauth facebook-graph-api facebook-oauth

5
推荐指数
1
解决办法
6438
查看次数

使用iOS的Google App Engine上的Facebook OAuth

我仍然无法在Google App Engine上使用OAuth 2 Facebook查找任何类型的教程来验证本机iOS应用程序.我意识到我可能需要在GAE上使用代理(例如:使用来自Iphone Native Client的Google App Engine进行身份验证)来创建与facebook的会话,但是使用本机facebook UI进行SSO的最简洁方法是什么?

我想我会使用Facebook ios Auth教程的内容:http://developers.facebook.com/docs/tutorials/ios-sdk-tutorial/authenticate/

但是,我如何将会话提供给我的GAE服务器,并在会话客户端设备上缓存会话,以便它可以验证对我的服务器的https请求?我基本上想在GAE上使用simple-auth,让我的iOS应用程序就像本机(web)客户端(但不使用UIWebViews).有没有一个简单的方法来做到这一点?

顺便说一下,我在Google App Engine上使用python.我发现这是针对Java的,但老实说我不确切知道它的作用,因为文档尚未编写http://www.lean-engine.com/index.html

类似的悬而未决的问题:https://stackoverflow.com/questions/14878727/oauth-from-native-ios-app-with-oauth-from-facebook

编辑:我基本上想要一个类似于Draw Something和其他Zynga游戏的登录,允许用户简单地使用他们的本机Facebook/iOS6身份验证来验证对我的服务器的API调用.

EDIT2:找到这篇内容丰富的帖子,但仍然没有关于如何做的教程在iOS应用程序中设计Facebook身份验证,该应用程序也访问安全的Web服务

google-app-engine single-sign-on ios oauth-2.0 facebook-oauth

5
推荐指数
1
解决办法
1052
查看次数

Facebook OAuth问题?无限循环更改URL上的"状态"参数

我们的应用程序工作正常但是,当我们试图在画布外部(直接在http://example.herokuapp.com)上输入我们的Facebook应用程序时,我们没有任何改变,在提供我们的FB用户和密码后,我们是陷入无限循环,其中URL上的"状态"参数不断变化:

https://example.herokuapp.com/?state=05b40a2e4d2c1f7b4c13a026a069acc3&code=AQCql520w_5dJjHnJlojMvzSCukAMrRsjqCipdkDP3N4h4zUQH72Q79oH2EMd_tQDv-fwKTJr2LG-azBUt37bUX06r3t9QHBwb27XBQyxmgdGdR_A1flZBY_oP-L0UEhjSu1FE8v2blILC8EuEWLNikgtkmaWWwy9e93KQX00wiVj422pzHuzn-m9_jZEUiKsf3dQIwCE3V7UBHMZCD9gS0#_=_
Run Code Online (Sandbox Code Playgroud)

在FB画布里面,它工作得很好.我们有一个双应用程序(测试环境)在画布内外工作正常(相同的代码和配置).

有任何想法吗?

谢谢

url facebook oauth facebook-graph-api facebook-oauth

5
推荐指数
1
解决办法
1643
查看次数

修复Rails oauth facebook x-frame-options sameorigin错误

我不能为我的生活让我的Facebook画布应用程序显示.Chrome控制台显示此错误,iframe中没有任何内容显示 - 它是空白的:

Refused to display 'http://mysite.dev/' in a frame because it set 'X-Frame-Options' to 'SAMEORIGIN'.

我正在使用Rails 4.0.0.rc1omn​​iauth-facebook 1.4.1,以Facebook身份验证上Railscast作为指南.我没有使用任何Javascript代码,因为它是可选的,理想情况下应该只能在Facebook中访问应用程序.

的routes.rb

  match 'auth/:provider/callback', to: 'sessions#create', via: [:get, :post]
  match 'auth/failure', to: redirect('/'), via: [:get, :post]
  match 'signout', to: 'sessions#destroy', as: 'signout', via: [:get, :post]
Run Code Online (Sandbox Code Playgroud)

sessions_controller.rb

class SessionsController < ApplicationController

  def create
    user = User.from_omniauth(env["omniauth.auth"])
    session[:user_id] = user.id
    redirect_to root_url
  end

  def destroy
    session[:user_id] = nil
    redirect_to root_url
  end
Run Code Online (Sandbox Code Playgroud)

application_controller.rb

我不得不对此发表评论,因为我不断收到InvalidAuthenticityToken错误,这些错误让我失去了我一天的另一半.在这里再说一点.

  # …
Run Code Online (Sandbox Code Playgroud)

authentication facebook ruby-on-rails facebook-oauth

5
推荐指数
1
解决办法
5741
查看次数

验证服务器上的Facebook登录

Web应用程序支持使用JavaScript SDK通过Facebook登录.

Facebook身份验证发生在客户端.成功后,将调用FB.getLoginStatus(),并将身份验证令牌和用户ID发送到服务器.

Web应用程序将Facebook用户ID存储在其数据库中.

服务器如何知道用户已成功登录并且身份验证令牌和用户ID尚未伪造客户端?有没有办法在不向Facebook服务器发送请求的情况下执行此验证服务器端?

facebook facebook-graph-api facebook-javascript-sdk facebook-oauth facebook-login

5
推荐指数
1
解决办法
1375
查看次数

Facebook OAuth未在用户信息中返回电子邮件

我正在进行狂欢3.0安装(ROR)并尝试使用facebook oauth进行身份验证,但是在成功的oauth之后发回的字段,不包含对我们的应用程序至关重要的电子邮件.这是从facebook成功验证返回的.

#<OmniAuth::AuthHash credentials=#<OmniAuth::AuthHash expires=true expires_at=1442435073 token="CAAJa3dyBtY4BAJ2ZB3vrenNOFJKSMtvxYO09ZCJtEsmKNBs90q9nmUF4LIBr06xCizEAR3lwht3BwycLkVFdjlvkS1AUGpYODQHu25K0uO8XLDDPkTO0E9oPdIILsbTTOuIT7qcl8nJ6501z0dCXEi9hVNwPYqZBbGqiEhyoLyVgCNnDWdPRLBRF5xSovJdhjjCf6XC8ulJ4NnKBfM8"> extra=#<OmniAuth::AuthHash raw_info=#<OmniAuth::AuthHash id="101230990227589" name="David Alajbbjfdjgij Bowersstein">> info=#<OmniAuth::AuthHash::InfoHash image="http://graph.facebook.com/101230990227589/picture" name="David Alajbbjfdjgij Bowersstein"> provider="facebook" uid="101230990227589"
Run Code Online (Sandbox Code Playgroud)

正如你所看到的,我得到的只是用户名和他们的ID.在我的Facebook应用程序上是否有一些设置需要检查以便收回电子邮件?或者我有不同的方式做Oauth?我只是使用spree_social gem,它在内部完成这一切所以我实际上并没有编写任何代码.

这是代码.复制出宝石,我只是添加了日志行,看看从Facebook回来的东西.

    def #{provider}
      authentication = Spree::UserAuthentication.find_by_provider_and_uid(auth_hash['provider'], auth_hash['uid'])

      if authentication.present? and authentication.try(:user).present?
        flash[:notice] = I18n.t('devise.omniauth_callbacks.success', kind: auth_hash['provider'])
        sign_in_and_redirect :spree_user, authentication.user
      elsif spree_current_user
        spree_current_user.apply_omniauth(auth_hash)
        spree_current_user.save!
        flash[:notice] = I18n.t('devise.sessions.signed_in')
        redirect_back_or_default(account_url)
      else
        user = Spree::User.find_by_email(auth_hash['info']['email']) || Spree::User.new
        user.apply_omniauth(auth_hash)
        Rails.logger.debug("THE AUTO HASH")
        Rails.logger.debug(auth_hash.inspect)
        if user.save
          flash[:notice] = I18n.t('devise.omniauth_callbacks.success', kind: auth_hash['provider'])
          sign_in_and_redirect :spree_user, user
        else
          session[:omniauth] = auth_hash.except('extra')
          flash[:notice] = Spree.t(:one_more_step, kind: auth_hash['provider'].capitalize)
          redirect_to …
Run Code Online (Sandbox Code Playgroud)

ruby-on-rails spree facebook-oauth

5
推荐指数
1
解决办法
2327
查看次数

facebook“有效的OAuth重定向URI”中不允许使用重定向URI

我添加了许多URI,包括域名,本地主机和IP地址“有效的OAuth重定向URI”。他们至今仍在工作。但是现在我添加了另一个IP地址。总是显示错误消息“不允许使用新的HTTP重定向URI”。甚至我添加了域名,如果没有https也不允许。是因为自2018年3月以来已更改了“对重定向URI使用严格模式”选项?以及如何使“有效的OAuth重定向URI”允许IP地址?

oauth facebook-oauth facebook-login

5
推荐指数
1
解决办法
2905
查看次数