我使用以下POST
方法获得了现有的C#项目:
// POST: /Account/ExternalLogin
[HttpPost]
[AllowAnonymous]
[ValidateAntiForgeryToken]
public ActionResult ExternalLogin(string provider, string returnUrl)
{
return new ExternalLoginResult(provider, Url.Action("ExternalLoginCallback", new { ReturnUrl = returnUrl }));
}
使用:
OAuthWebSecurity.Login(provider, ...);
我对OAuth不熟悉,并且在这个C#项目中没有做过任何事情。不过我在Android应用上实现了Google授权,我想为HttpPost使用以下类/方法:
public class TaskPostAPI extends AsyncTask<String, Void, String>
{
GoogleApiClient googleAPI;
public TaskPostAPI(GoogleApiClient googleAPI){
this.googleAPI = googleAPI;
}
@Override
protected String doInBackground(String... urls){
String response = "";
for(String url : urls){
DefaultHttpClient client = new DefaultHttpClient();
HttpPost post = new HttpPost(url);
try{
List<NameValuePair> nvPairs = new ArrayList<NameValuePair>(2); //(3);
//nvPairs.add(new BasicNameValuePair("personName", Plus.PeopleApi.getCurrentPerson(googleAPI).getDisplayName()));
//nvPairs.add(new BasicNameValuePair("personGooglePlusProfile", Plus.PeopleApi.getCurrentPerson(googleAPI).getUrl()));
//nvPairs.add(new BasicNameValuePair("personEmail", Plus.AccountApi.getAccountName(googleAPI)));
nvPairs.add(new BasicNameValuePair("provider", ???));
URL u = new URL(url);
nvPairs.add(new BasicNameValuePair("returnUrl", u.getProtocol() + "://" + u.getHost()));
post.setEntity(new UrlEncodedFormEntity(nvPairs));
HttpResponse execute = client.execute(post);
InputStream content = execute.getEntity().getContent();
BufferedReader buffer = new BufferedReader(new InputStreamReader(content));
String s = "";
while((s = buffer.readLine()) != null)
response += s;
}
catch(Exception ex){
ex.printStackTrace();
}
}
return response;
}
}
所以我的问题是:我应该在POST-method's
??? 。那么Provider
是什么?在我的Android应用中,我使用Google
登录,并获得了GoogleApiClient
和Person
(com.google.android.gms.plus.model.people.Person
)。
在this website我看到以下网址:https://accounts.google.com/o/oauth2/auth
。这是我应该用作provider
的网址吗?或者我应该在此网址中添加parameters
吗?或者我应该使用完全不同的字符串provider
?
PS:如果有人可以向我发送指向provider-urls
列表的链接(例如Google's
,Facebook's
,Twitter's
等)以及如何使用它们C#OAuthWebSecurity
我很感激。
提前感谢您的回复。
答案 0 :(得分:0)
好吧事实证明这很简单.. provider
只是&#34;谷歌&#34;,仅此而已,而不是...... provider name
我在{{1}找到了de C#project中的方法:
RegisterClient
现在OAuthWebSecurity.RegisterClient(client, "Google", extraData);
正常工作,但消息POST
除外,但至少我可以继续。在使用"The required anti-forgery cookie "__RequestVerificationToken" is not present."
时,我认为将Cookie
添加到HttpPost
并不是很难。