在asp.net身份的facebook身份验证流程中,facebook oauth对话框将代码而不是访问令牌附加到redirect_url,以便服务器可以通过此代码交换此代码http://localhost:49164/signin-facebook?code=...&state=....
我的问题是我的客户端是一个使用facebook sdk的移动应用程序,它直接给了我一个访问令牌.Facebook说使用sdk总是给你一个访问令牌,所以我可以直接给web api访问令牌吗?
我知道这不是很安全,但它是否可能?
facebook facebook-android-sdk facebook-ios-sdk asp.net-web-api
我在WebApi上实现了基于OWIN令牌的身份验证,我也通过调用启用了CORS app.UseCors(Microsoft.Owin.Cors.CorsOptions.AllowAll)
我可以从angularjs Web客户端访问我的应用程序的各种不安全部分.我使用过这个http拦截器,当我尝试访问受保护的资源时,我得到了我的登录弹出窗口.
现在,为了登录,我必须http://mywebapi/token使用表格编码的UserName密码和grant_type 进行调用,请参阅下面的标题签名(来自chrome)
Request URL:http://mywebapi/token
Request Headers CAUTION: Provisional headers are shown.
Accept:application/json, text/plain, */*
cache:false
Content-Type:application/x-www-form-urlencoded
Origin:http://127.0.0.1:49408
Referer:http://127.0.0.1:49408/
User-Agent:Mozilla/5.0 (Macintosh; Intel Mac OS X 10_9_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/35.0.1916.153 Safari/537.36
Form Dataview sourceview URL encoded
grant_type:password
UserName:correctuser
Password:Password
Run Code Online (Sandbox Code Playgroud)
当我使用邮递员发送此请求时,它会在预期的accessstoken中恢复正常,但是当我尝试使用angular的$ http服务时,它会发出OPTIONS请求(我可以在Dev工具控制台中看到这一点),但出于某种原因,我得到了此错误消息
No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'http://127.0.0.1:49408' is therefore not allowed access.
Run Code Online (Sandbox Code Playgroud)
注意:这仅适用于/ token请求,它是form-url-encoded,对于所有其他json请求,标头按预期添加.有人可以请求帮助,我的想法已经用完了.
谢谢
我又被卡住了!我正在尝试使用个人帐户使用ASP.NET身份实现安全的WebApi服务.WebApi服务将由使用phonegap开发的移动应用程序使用.我的phonegap应用程序使用Facebook和Twitter进行登录,我已在客户端上完美地实现了这一点.
我已经从visual studio模板创建了一个SPA项目,我已经使用fiddler和chrome dev工具测试了监控HTTP请求的登录过程.我使用邮递员尝试了以下请求
得到: http://localhost:49577/api/Account/ExternalLogins?returnUrl=/&generateState=true
响应:
[{
"Name": "Facebook",
"Url": "/api/Account/ExternalLogin?provider=Facebook&response_type=token&client_id=self&redirect_uri=http%3A%2F%2Flocalhost%3A49577%2F&state=jpePf27F3ufkCCEldFdoOVMEGBGTEO1CrRdUQ3bHEP01",
"State": "jpePf27F3ufkCCEldFdoOVHSGBGTEO1CrRdUQ3bHEP01"
}]
Run Code Online (Sandbox Code Playgroud)
然后我调用GET:http://localhost:49577/api/Account/ExternalLogin?provider=Facebook&response_type=token&client_id=self&redirect_uri=http%3A%2F%2Flocalhost%3A49577%2F&state=jpePf27F3ufkCCEldFdoOVMEGBGTEO1CrRdUQ3bHEP01
调用AccountsController的GetExternalLogin方法.然后,当用户未经过身份验证时,它会返回ChallengeResult的实例.
这是我被困的地方.Q1:ChallengeResult强制301重定向到facebook登录页面,带有一些查询字符串参数.我不想要这个,我希望它给我参数,但让我处理我的ajax请求中的日志记录.我试过评论这行代码
Request.GetOwinContext().Authentication.Challenge(LoginProvider);
Run Code Online (Sandbox Code Playgroud)
但我最终得到了401没有别的,我怎么能控制ChallegeResult的反应?
Q2.此外,在我从facebook获取访问令牌之后,我无法弄清楚接下来是什么,如果我已经获得访问令牌,我应该调用哪个webapi端点,我应该传递给它什么?
我整天都用Google搜索,但找不到任何能回答我问题的内容.任何帮助,将不胜感激.谢谢
更新:
关于Q2; 我已经想出了下一步,那就是GET:http://localhost:49164/signin-facebook?code=...&state=...
这将返回另一个重定向到的302
http://localhost:49164/api/Account/ExternalLogin?provider=Facebook&response_type=token&client_id=self&redirect_uri=http%3A%2F%2Flocalhost%3A49164%2F&state=7oGPd37EA-nmtXPtYEQ40qnretDeKjbPEM1gNkb2DuM1
Run Code Online (Sandbox Code Playgroud)
然后返回另一个302然后重定向到
http://localhost:49164/#access_token=...
Run Code Online (Sandbox Code Playgroud)
那么如何处理来自移动非浏览器客户端的所有重定向?
UPDATE
我试图找到处理的控制器动作
http://localhost:49164/signin-facebook?code=...&state=...
可以帮助任何人吗?
更新 我已经发布了这个问题了解了很多有关facebool登录流程的信息,这可能是我之前应该做的!我仍然有一个问题,但我在这里创建了一个不同的问题,以减少混乱
有谁知道如何使PhoneGap的项目模板在Visual Studio 2012中工作?
我正在尝试使用Visual Studio 2013和Web Essentials在projetc中编译SCSS文件.这是我在visual studio输出窗口中得到的错误
Something went wrong reaching: http://127.0.0.1:52658/?service=SCSS&sourceFileName=C:\Development\KnockApp\KnockApp\KnockApp.Web\Content\scss\directory.scss&targetFileName=C:\Users\IEUser\AppData\Local\Temp\3510b388-06aa-48bb-b517-e1442399e924.css&mapFileName=C:\Users\IEUser\AppData\Local\Temp\3510b388-06aa-48bb-b517-e1442399e924.css.map&precision=5&outputStyle=expanded&
SCSS: directory.scss compilation failed: The service failed to respond to this request
Possible cause: Syntax Error!
Run Code Online (Sandbox Code Playgroud)
SCSS文件来自第三方主题,他们使用Compass,我已将指南针文件包含在我的项目中.我还在机器上安装了node和node-sass.有什么想法吗?
嗨,我正在尝试用小黄瓜语法编写表达一组要求,但这需要大量重复。我在这里看到我可以使用占位符,这对我的任务来说是完美的,但是我的 Given 和 then 中的一些数据是集合。我将如何在示例中表示集合?
Given a collection of spaces <spaces>
And a <request> to allocate space
When I allocate the request
Then I should have <allocated_spaces>
Examples:
| spaces | request | allocated_spaces |
| ? | ? | ? |
Run Code Online (Sandbox Code Playgroud) 我目前正从共享主机迁移到azure,我一直在将我的asp.net应用程序迁移到azure/sql azure.对于mvc3/4站点,我不得不将其成员资格提供程序更改为通用成员资格提供程序,以便让它们位于SQL Azure上.现在我必须做dnn网站,我无法理解使用什么策略.我尝试使用For SQL Azure选项生成数据库脚本,但是我收到了大量的错误
此版本的SQL Server不支持不推荐使用的功能"字符串文字作为列别名".
此外,我没有选择安装新的dnn门户,因为尝试设置30多个模块和页面太多了.
所以我想我的问题是将现有的dnn门户迁移到windows azure的最佳策略是什么?
我正在使用实体框架 codefirst 并且我有以下设计
public class Location
{
public int Id { get; set; }
public string Name { get; set; }
public bool IsDeleted { get; set; }
}
public class DelieryRate
{
public int Id { get; set; }
public int OriginId { get; set; }
public Location Origin { get; set; }
public int DestinationId { get; set; }
public Location Destination { get; set; }
public double Amount { get; set; }
public bool IsActive { get; …Run Code Online (Sandbox Code Playgroud) 我一直在修补Xamarin表格,我遇到了一些障碍.我有一个应用程序,其rootPage是一个TabbedPage.我以编程方式将三个子Contentpages添加到此页面.这一切都很好.但是,这些页面会打开其他页面,这些页面可能打开或不打开其他页面等.
我曾尝试将ContentPage用于子页面并将rootpage Navigation属性传递给它们并使用它来调用Navigation.PushAsync我还尝试制作页面导航页面,然后在自己的属性上调用Navigation.PushAsync:这会抛出一些未处理的异常
谁能请帮忙!
我需要做一些词义消歧作为一个更大的项目的一部分,我遇到WordNet.Net 我试图使用下载的WordsMatching项目附带的wordsensedisambiguator类,这里是我的代码
string sent = "We have investigated the inductions of the IE genes in response to calcium signals in Jurkat cells (in the presence of activated p21(ras)) and their correlated consequences.";
Tokeniser tok = new Tokeniser();
tok.UseStemming = true;
string[] words = tok.Partition(sent);
if (words.Length == 0) return null;
MyWordInfo[] wordInfos = new MyWordInfo[words.Length];
for (int i = 0; i < words.Length; i++)
{
WnLexicon.WordInfo wordInfo = WnLexicon.Lexicon.FindWordInfo(words[i], true);
if (wordInfo.partOfSpeech != Wnlib.PartsOfSpeech.Unknown && wordInfo.text != string.Empty)
{ …Run Code Online (Sandbox Code Playgroud) 所以这是我的情况,我有一个umbraco网站,该网站分为一个组织中每个部门的部分.每个组织都希望管理自己的内容并希望拥有自己的管理员.但是,他们不希望其他部门的管理员能够修改他们自己部门之外的内容.
有没有办法限制内容编写者只能在umbraco后端的特定部分编辑内容?
好的,所以我被这个难倒了。我从一个 javascript 库中得到一个字符串值。我打电话myStringVar = myStringVar.trim(),但当我这样做时,myStringVar.substring(0,1)它给了我一个空字符串。当我调用var arr = myStringVar.split('')数组中的第一个元素是空字符串时,当我调用 arr[0].trim().length 时,它返回 1 而不是零。
我错过了什么吗?
编辑 根据评论和回复,我已经能够将问题隔离到字符串开头存在非可视化的 unicode 字符。我现在将尝试找到一种方法来从字符串中删除这些字符......或者更好的是提取字符串中感兴趣的部分。谢谢您的帮助。