标签: facebook-oauth

尝试获取访问令牌时出现“请求无效,因为应用程序机密与客户端令牌相同”错误

我正在使用 facebook php sdk 没有任何问题在我的网站上提供 facebook 登录。几天后,我无法再登录了。我按照https://developers.facebook.com/docs/howtos/login/server-side-login/ 上描述的步骤操作,但在第 6 步失败并显示以下响应:

{
  error: {
    message: "The request is invalid because the app secret is the same as the client token",
    type: "OAuthException",
    code: 1
  }
}
Run Code Online (Sandbox Code Playgroud)

我不明白为什么它停止工作。你有没有遇到过同样的问题?

谢谢

facebook-authentication facebook-oauth facebook-php-sdk app-secret facebook-access-token

3
推荐指数
1
解决办法
5086
查看次数

Facebook PHP SDK 4.0 - 一旦被拒绝,就无法重新询问读取权限

目前,我正在要求用户提供两个读权限,即emailuser_location和一个写PERMSSION即publish_actions.以下是我用来验证用户是否已授予所有请求权限的代码段:

    $facebook = new Facebook(APP_ID, APP_SECRET, REDIRECT_URI);

    if ( $facebook->IsAuthenticated() ) {

        // Verify if all of the scopes have been granted
        if ( !$facebook->verifyScopes( unserialize(SCOPES) ) ) {
            header( "Location: " . $facebook->getLoginURL( $facebook->denied_scopes) );
            exit;
        }
        ...
    }
Run Code Online (Sandbox Code Playgroud)

Facebook是我自定义构建的类,用于包装SDK中各种类使用的登录流.IsAuthenticated()使用codeget变量来检查用户是否被授权.verifyScopes()检查授予对属性SCOPES的拒绝范围数组并对其进行分配的权限denied_scopes.getLoginURL()`根据作为数组作为唯一参数传递的权限构建登录对话框URL.

现在,问题是当用户没有授予写权限时,publish_actions在这种情况下,显示写权限对话框,直到用户授予写权限.但是,如果用户选择拒绝读取权限,email则说明不显示读取登录对话框.相反,Facebook重定向到回调URL(即REDIRECT_URI)创建重定向循环.

我正在建立的应用程序需要email强制提供,但显然上述方法(似乎是唯一的)失败了.那么,是否有解决方法或替代方法来实现这一目标?或Facebook一旦被拒绝就不允许要求读取权限?

facebook-graph-api oauth-2.0 facebook-oauth facebook-php-sdk facebook-graph-api-v2.0

3
推荐指数
1
解决办法
1506
查看次数

我应该如何识别使用 Facebook 登录注册的用户?

我正在尝试使用 Facebook 登录功能使用 JavaScript 将用户注册到我的 Web 应用程序,然后将用户信息传递到应用程序的服务器端,现在我必须保存信息,以便稍后可以作为该用户登录,但它应该在没有密码的情况下完成,我应该在我的应用程序的数据库中保存什么而不是密码,以便验证用户确实是他声称的身份而不是其他试图绕过我的安全的人?第一个想法是保存 Facebook 用户 ID 以对用户进行身份验证,但听起来根本不安全,这是一个好主意还是一个坏主意?还有其他的表演我需要的吗?

javascript openid oauth facebook-graph-api facebook-oauth

3
推荐指数
1
解决办法
1630
查看次数

GetExternalLoginInfoAsync返回空的dotnet core 2.0

我正在尝试使用dot-net core 2.0设置Facebook身份验证,但是在我的ExternalLoginCallbackAsync方法中,作为响应,我一直得到null,因为我已经遵循了文档,到目前为止,这是我已经完成的工作:

在启动文件中的ConfigureServices中:

services.AddAuthentication(
            options => options.DefaultAuthenticateScheme = CookieAuthenticationDefaults.AuthenticationScheme);

services.AddAuthentication().AddFacebook(
    f => {
        f.AppId = Configuration["facebook-app-id"];
        f.AppSecret = Configuration["facebook-app-secret"];
});
Run Code Online (Sandbox Code Playgroud)

在我的登录控制器中:

public IActionResult ExternalLogin(string provider)
        {

            var authProperties = new AuthenticationProperties
            {
                RedirectUri = Url.Action("ExternalLoginCallbackAsync", "Login")                
            };
            return Challenge(authProperties,provider);
        }
Run Code Online (Sandbox Code Playgroud)

在我的ExternalLoginCallbackAsync方法中

var info = await _signInManager.GetExternalLoginInfoAsync();
Run Code Online (Sandbox Code Playgroud)

有什么提示我为什么总是空吗?

谢谢

facebook-oauth asp.net-core-mvc .net-core asp.net-core-2.0 .net-core-2.0

3
推荐指数
1
解决办法
1670
查看次数

使用Facebook帐户登录网站

我想在我们当前的网站上实施SSO,以便我们可以使用Facebook帐户登录该网站.能否请您提供实施它需要遵循的步骤?

single-sign-on oauth-2.0 facebook-c#-sdk facebook-oauth

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

Windows服务Facebook C#SDK架构

我们认为不应该是一个不常见的情况,但找不到任何指导.

我们有一个帐户,每个品牌都有多个页面一个.我们需要一个Windows服务,该服务无人值守,在检查数据库中预先安排的帖子后,定期发布各个页面的帖子.

我们看到的唯一问题是身份验证.即使Twitter API也使用oAuth,我们也可以从Twitter获取永不过期的访问代码,并使用它来进行所有API调用.我需要的是Facebook API中的等价物.缺乏这一点,我需要一种方法来做我上面描述的.

提前感谢你的帮助.

~DCT

.net c# service facebook-c#-sdk facebook-oauth

2
推荐指数
1
解决办法
1127
查看次数

在iOS和网站之间共享Facebook访问令牌

我开发了一个PHP网站,用户通过Facebook进行身份验证,然后我获取并存储他们的auth_token.

另一方面,我已经开始开发一个iOS应用程序,用户也可以通过Facebook进行身份验证.如您所知,auth_token将与我在网站身份验证过程中获得的不同(与网站中的Facebook应用程序相同)

我的问题是:我可以使用我在iOS应用程序中获得的auth_token来向网站发出请求吗?(同一用户,相同的应用程序)

原因是有时我希望从移动设备执行某些操作(即更新状态),而其他操作则从Web服务器执行(即检查当前用户的哪些朋友已在我的网站中注册)

谢谢

facebook access-token ios facebook-oauth facebook-access-token

2
推荐指数
1
解决办法
1376
查看次数

Facebook oauth身份验证重定向到localhost而不是我的域

通过OAuth进行身份验证时,Facebook会重定向到localhost而不是我的域.我正在使用django-allauth进行facebook身份验证.GitHub的某个人指出错误可能在Nginx配置中.我正在粘贴下面的nginx配置:

server { # simple reverse-proxy
    listen       80;
    server_name  subdomain.domain.com;
    access_log   logs/site.access.log;

    # serve static files
    location ~ ^/static/  {
        root    /home/user_name/site_assets/;
        expires 30d;
    }

    # serve media files
    location ~ ^/media/(images|javascript|js|css|flash|img)/  {
        root    /home/user_name/site_assets/;
        expires 30d;
    }

    # pass requests for dynamic content to rails/turbogears/zope, et al
    location / {
        proxy_pass      http://localhost:8000;    
    }
  }
Run Code Online (Sandbox Code Playgroud)

有人可以澄清我在这里缺少的东西吗?

nginx facebook-oauth django-allauth

2
推荐指数
1
解决办法
1697
查看次数

使用Graph API和Python发布到Facebook Group

我一直在寻找有关如何使用Python和Facebook API向Facebook上的组墙发布消息的文档无效或文档尚不清楚我需要设置什么权限.

我怎么能这样做?

这是我目前的代码.

from facepy import GraphAPI

graph = GraphAPI(graphApiAccessToken)

graph.post(path = 'groups/GROUPNAME', message='Hello world')
Run Code Online (Sandbox Code Playgroud)

python facebook facebook-graph-api facebook-oauth

2
推荐指数
1
解决办法
7698
查看次数

Facebook调试令牌而不使用任何SDK,只是一个HTTP GET请求

我没有使用任何Facebook SDK,而是使用HTTP请求.这是我用来将用户登录到我的应用程序的URL :(非真实ID或URL)

https://www.facebook.com/dialog/oauth?
  client_id=6545941f68498461
  &redirect_uri=https://script.google.com/macros/s/hcz-IRoJhm/exec?
  &response_type=token
  &scope=publish_stream
Run Code Online (Sandbox Code Playgroud)

文档在这里.官方Facebook登录

用户使用Facebook登录后,我的网站加载了一个附加到URL的访问令牌.我请求一个response_type=token令牌,而不是代码或代码和令牌.

根据Facebook文档, Confirming Identity

由于此重定向流涉及浏览器从"登录"对话框重定向到应用程序中的URL,因此流量可以使用虚构的片段或参数直接访问此URL.如果您的应用假设这些是有效参数,则您的应用会使用虚构数据进行潜在的恶意攻击.因此,在为其生成访问令牌之前,您的应用应确认使用该应用的用户是您拥有响应数据的人.确认身份是以不同的方式完成的,具体取决于上面收到的response_type:

因为我token从Facebook文档中收到这句话应该适用于我:

收到令牌后,需要进行验证.您应该对检查端点进行API调用,该端点将指示为哪个应用程序生成令牌.您可以从客户端或服务器执行此操作,具体取决于您的用例.

对于这种特殊情况,有一个标题为" 检查访问令牌 "的部分:

以下是Facebook文档的引用:

无论您的应用是否使用代码或令牌作为"登录"对话框中的response_type,此时它都会收到访问令牌.但是,出于与上述相同的安全原因,您应该执行自动检查以确认该令牌属于您的应用期望它所属的人,并且您的应用是生成该令牌的.我们提供了以下可用于检查访问令牌的Graph API端点:

GET graph.facebook.com/debug_token?
     input_token={token-to-inspect}
     &access_token={app-token-or-admin-token}
Run Code Online (Sandbox Code Playgroud)

因此,我已经从URL的末尾解析了访问令牌,然后根据检查示例中的配置从服务器发出了另一个GET请求,我无法使其工作.我已尝试使用生成的应用令牌,我尝试使用我的应用程序ID加我的应用程序密钥,但没有任何作用.我收到一条错误消息:

Execution failed: Invalid argument:
Run Code Online (Sandbox Code Playgroud)

如果我使用Facebook调试器

并粘贴从登录返回的令牌,它工作正常.我得到了回信息.所以我回来的令牌是有效的.

我正在使用确切的语法来检查访问令牌,并且我已经多次检查每个字符的拼写或语法错误.必须有其他原因导致请求被拒绝.出于测试目的,我从不同的URL发送HTTP GET请求,但由于令牌是portable,Facebook允许来自不同位置的请求,例如来自服务器的请求.

为什么我的请求失败了?

我想知道是否有一些导致错误的Apps Script UrlFetch服务.我回来的令牌是有效的.在线调试器中,令牌很好.我一直在收到invalid argument错误. GET请求没有有效负载,所以尝试使用payload,所以尝试使用该参数对我没有帮助.

我将HTTPExceptions静音,并得到了回复:

{"error":{"message":"Unsupported get request.","type":"GraphMethodException","code":100}}
Run Code Online (Sandbox Code Playgroud)

在Facebook Receiving Error Codes表格中,没有代码100.

我设定的"escaping" : false想法也许可能有一个不应该被逃脱的角色,但是没有做任何事情.

也许URL中有一些fetch不喜欢的东西.也许我需要手动逃避一些事情.

好的,我已经找到了一些东西.Google Apps脚本UrlFetchApp.fetch(getAppTknURL, optnAppTkn); 不喜欢"|"字符.如果我使用该字符,我会收到一个Execution failed: Invalid argument: …

facebook google-apps-script facebook-graph-api facebook-oauth

2
推荐指数
1
解决办法
5670
查看次数