【发布时间】:2014-06-18 20:51:57
【问题描述】:
我有一个现有的 C# 项目,使用以下 POST 方法:
// 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,我将不胜感激它。
提前感谢您的回复。
【问题讨论】:
标签: c# android post oauth google-oauth