我正在开发一个Facebook应用程序.我有一个服务器端OAuth流程,它允许我验证用户,而无需他点击任何按钮.因此,只要其他信息检索他的accessToken,并在生成页面之前在服务器端使用这些信息.
在我的应用程序中,我现在需要使用Javascript API,它可以在技术上共享相同的 Oauth令牌.
是否可以使用给定的Oauth令牌实例化FB javascript对象?
我知道可以做相反的意思,即在客户端执行Oauth进程并通过cookie与服务器端共享Oauth密钥,但我认为这有两个缺点:_首先,它意味着有这个"登录"按钮对我来说不是一个Facebook应用程序的良好用户体验._此外,如果我的应用程序由两个不同的页面组成,我不知道这个Oauth进程应该如何表现.从一个页面转到另一个页面完全重新加载javascript.这个Oauth进程(使用弹出窗口等)是否会在每个页面重新加载时完成?
谢谢你的帮助 !
我和我的同事开发了一个应用程序(包括Web应用程序和移动应用程序(iPhone和android)),其中包括一个登录过程.目前,我们拥有自己的登录机制(用户已在我们的应用程序上签署了帐户,并将其信息存储在我们的数据库中).我们正在寻求整合oAuth并允许用户使用Facebook,Twitter,LinkedIn和Google登录.
现在,当用户使用其中任何一个进行登录时,据我所知,登录过程发生在我们的应用程序之外,并且基本上只获得访问其资源的权限.
我的问题是:通过oAuth,我们如何记住用户?即,登录的用户具有读/写权限并具有首选项.当他们没有通过我们的应用程序实际注册时,我们如何记住这些...我们可以将他们的电子邮件地址存储在我们的"用户"表中吗?
在这种情况下,最佳做法是什么?
感谢您提供的任何信息.
我在我的应用程序中有春季安全登录的春季3.1.我正在尝试使用spring social添加facebook登录.它进入Facebook登录页面,但登录后它会引发404错误.我在URL中有这个:
http://localhost:8080/TestProject/signin?error=provider#_=_
Run Code Online (Sandbox Code Playgroud)
这是我的春季社交配置:
<bean class="org.springframework.social.connect.web.ProviderSignInController">
<!-- relies on by-type autowiring for the constructor-args -->
<constructor-arg ref="signInAdapter" />
</bean>
<bean id="connectionFactoryLocator"
class="org.springframework.social.connect.support.ConnectionFactoryRegistry">
<property name="connectionFactories">
<list>
<bean class="org.springframework.social.facebook.connect.FacebookConnectionFactory">
<constructor-arg value="${fb.id}" />
<constructor-arg value="${fb.passwrd}" />
</bean>
</list>
</property>
</bean>
<bean id="connectionRepository" factory-method="createConnectionRepository"
factory-bean="usersConnectionRepository" scope="request">
<constructor-arg value="#{request.userPrincipal.name}" />
<aop:scoped-proxy proxy-target-class="false" />
</bean>
<bean id="signInAdapter" class="com.Test.social.SimpleSignInAdapter"/>
<bean id="usersConnectionRepository"
class="org.springframework.social.connect.jdbc.JdbcUsersConnectionRepository">
<constructor-arg ref="dataSource" />
<constructor-arg ref="connectionFactoryLocator" />
<constructor-arg ref="textEncryptor" />
</bean>
<bean id="textEncryptor" class="org.springframework.security.crypto.encrypt.Encryptors"
factory-method="noOpText" />
</beans>
Run Code Online (Sandbox Code Playgroud)
有什么想法吗?
spring spring-mvc spring-security facebook-oauth spring-social
添加了accounts-facebook包.我试图按照文档登录Facebook:http://docs.meteor.com/#meteor_loginwithexternalservice
有这个按钮点击事件:
Meteor.loginWithFacebook({ requestPermissions: ['email']},
function (error) {
if (error) {
return console.log(error);
}
});
Run Code Online (Sandbox Code Playgroud)
并在服务器上进行此设置:
Accounts.loginServiceConfiguration.remove({
service: "facebook"
});
Accounts.loginServiceConfiguration.insert({
service: "facebook",
clientId: "389711236782370",
secret: "2wwd9c47589e3eb19e7dbgfb235b6a12"
});
Run Code Online (Sandbox Code Playgroud)
我在facebook登录弹出窗口中得到一个未定义的client_id:https://www.facebook.com/dialog/oauth?client_id = undefined&redirect_uri = http://localhost:3000/_oauth/facesbook?close ...
即使我使用Meteor生成的{{loginButtons}},我也会得到相同的结果.我还添加了谷歌包,它的工作完美.谢谢你的帮助.
我正在用facebook和devise实现oauth登录,当从接受应用程序(弹出窗口)返回时,我收到以下错误:
无法通过Facebook验证您,因为"Csrf已检测到".
这是日志:
在2014-01-23 23:59:58开始GET"/ users/auth/facebook/callback"为127.0.0.1 +0100 ActiveRecord :: SchemaMigration Load(0.3ms)SELECT"schema_migrations".*FROM"schema_migrations"(facebook )回调阶段已启动.(脸谱)认证失败!csrf_detected:OmniAuth :: Strategies :: OAuth2 :: CallbackError,csrf_detected | CSRF检测到
我的用户模型
class User < ActiveRecord::Base
devise :token_authenticatable, :database_authenticatable, :registerable,
:recoverable, :rememberable, :trackable, :validatable, :confirmable,
:omniauthable, :omniauth_providers => [:facebook]
before_save :ensure_authentication_token
has_one :user_settings
has_many :predictions
has_many :user_leagues
has_many :leagues, through: :user_leagues # this wasn't working, solution found: http://stackoverflow.com/questions/1781202/could-not-find-the-association-problem-in-rails
valid_email_regex = /\A[\w+\-.]+@[a-z\d\-]+(\.[a-z]+)*\.[a-z]+\z/i
validates :email, format: { with: valid_email_regex }
validates :firstName, :lastName, :username, presence:true
acts_as_voter
def self.find_for_facebook_oauth(auth)
where(auth.slice(:provider, :uid)).first_or_initialize.tap do |user|
user.provider …Run Code Online (Sandbox Code Playgroud) 我正在开发一个必须与Facebook连接以下载一些用户数据的扩展.我对OAuth舞蹈的细节有点新鲜,并且无法以期望的安全级别实现这一点.在当前的设置(有效)我担心恶人劫持我的应用程序的名称并使用它来发布垃圾邮件.
我尝试了许多不同的技术来在我的扩展中实现OAuth(特别是在Facebook上登录).当前设置使用Facebook的手动登录流程.
这按预期工作.我可以通过弹出窗口提供我的应用程序权限后检索用户auth_tokens.
我担心安全性,因为扩展没有服务器来存储密钥,也没有有效的域来限制redirect_urls并验证授权请求的真实性.由于这个流程:黑客可以简单地将源下载到我的扩展,窃取Facebook App ID,从他们自己的网站为我的应用程序生成弹出窗口,并获得auth_tokens,可以代表"通过"我的应用程序发布.
更令人担忧的是,官方Google Chrome对扩展中的OAuth的古老建议将您的consumer_secret嵌入到扩展程序中.这似乎违反直觉.
我有理由相信这可以通过两种方式解决:
我更喜欢第二种选择,因为运行服务器可能代价高昂,并为扩展引入了另一个故障点.用户还必须处理持有auth_tokens的"黑匣子"代码,这很糟糕.
有趣的是,看起来Facebook对ms-app:// URL(Windows 8应用程序)提出了特殊例外.为什么不chrome-extension:// urls?
所以我的问题: - 这可能吗?我错过了什么吗?第二:我是否对这种类型的劫持攻击感到偏执?它似乎相当温和,但我宁愿不允许黑客劫持我的应用程序的oauth对话框.
谢谢
google-chrome-extension facebook-graph-api oauth-2.0 facebook-javascript-sdk facebook-oauth
我们的桌面应用程序(用Java编写并在Windows上运行但未在Windows应用程序商店中注册)需要在用户的Facebook配置文件上发布图像(使用publish_actions权限).
虽然我们的实施工作在测试模式(我们能够在测试用户的个人资料上发布),但我们的申请提交已经被Facebook拒绝并提出以下意见:

我们目前的实施如下:
由于这种方法在审查我们的应用程序提交时被Facebook拒绝(虽然它确实在测试模式下工作),我们尝试了另一种方法:
但不幸的是,这会在加载登录URL时生成以下错误消息:
应用程序配置不允许使用URL:应用程序的设置不允许使用一个或多个给定的URL.它必须与网站URL或Canvas URL匹配,或者域必须是App域之一的子域.
任何帮助或提示都非常受欢迎,因为我们已经被阻止了好几周.谢谢!托马斯
我有我的前端rails应用程序也使用AngularJs我也有一个api后端也写在Rails(使用rails-api宝石).我已经为这个系统实现了登录系统.现在我想实施login with facebook/google.我通过互联网搜索,到目前为止我找到了这个博客.在这个博客中,我得到了google OAuth 2在Android中使用Rails作为后端实现的想法.但在我的情况下,我想google OAuth 2在我的前端应用程序(Rails + Angular)中实现Rails作为后端.
对于实施的google OAuth 2,前端应用程序需要请求token来google oauth2 authorization server和我对如何做到这一点不知道.
另外,使用rails来请求令牌是好的,或者我可以将Angular用于该部分.为此目的,最佳做法是什么?
ruby-on-rails facebook-oauth angularjs rails-api google-oauth2
TL; DR; Facebook登录使得原始推荐URL发生变化,因为在GA中,它看起来像是最初来自Facebook.
使用Google Analytics(UA)进行Facebook(Oauth)登录时,我们遇到以下问题:
用户登陆/ page/1?utm_campaign = aaa和GA会话是使用正确的初始引荐来源,广告系列等创建的.
用户访问其他几个页面并决定使用Facebook注册
Facebook登录使用户的浏览器转到Facebook并返回更改推荐,从而创建新的GA会话
当用户回到我们的回调网址时,我们会触发一个在GA中转换为目标的事件
问题是所有使用Oauth注册的用户都将推荐设置为Facebook,并将登陆页面设置为Facebook回调后登陆的页面,因为当GA"重置"会话时:(.
有没有办法在GA中加入两个会话并让它知道它始终是同一个用户,以便Facebook注册保留有关初始引荐来源,登录页面,UTM等的完整信息?
我正在尝试从Facebook获取用户名和用户电子邮件.我阅读了很多关于这个主题的信息,这是我的最终代码,仅在我的facebook app管理员帐户上有效:
public partial class Startup
{
public void ConfigureAuth(IAppBuilder app)
{
/*Other external login options*/
var FacebookOptions = new FacebookAuthenticationOptions()
{
AppId = "My App Id",
AppSecret = "My App Secret",
SignInAsAuthenticationType = DefaultAuthenticationTypes.ExternalCookie,
BackchannelHttpHandler = new FacebookBackChannelHandler(),
UserInformationEndpoint = "https://graph.facebook.com/v2.7/me?fields=id,name,email"
};
}
}
public class FacebookBackChannelHandler : HttpClientHandler
{
protected override async Task<HttpResponseMessage> SendAsync(HttpRequestMessage request, System.Threading.CancellationToken cancellationToken)
{
if (!request.RequestUri.AbsolutePath.Contains("/oauth"))
{
request.RequestUri = new Uri(request.RequestUri.AbsoluteUri.Replace("?access_token", "&access_token"));
}
return await base.SendAsync(request, cancellationToken);
}
}
public class AccountController : Controller …Run Code Online (Sandbox Code Playgroud) facebook-oauth ×10
oauth ×4
access-token ×1
angularjs ×1
api ×1
asp.net ×1
c# ×1
csrf ×1
devise ×1
facebook ×1
javascript ×1
meteor ×1
oauth-2.0 ×1
rails-api ×1
spring ×1
spring-mvc ×1