【问题标题】:C# OAuthWebSecurity Google Provider URL?C# OAuthWebSecurity Google 提供程序 URL?
【发布时间】: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 登录,并获得了 GoogleApiClientPerson (com.google.android.gms.plus.model.people.Person)。

this website,我看到以下网址:https://accounts.google.com/o/oauth2/auth。这是我应该用作provider 的网址吗?或者我应该在这个网址中添加parameters 吗?或者我应该使用完全不同的字符串作为provider

PS:如果有人可以向我发送指向 provider-urls 列表的链接(如 Google'sFacebook'sTwitter's 等)以及如何将它们用于 C# OAuthWebSecurity,我将不胜感激它。

提前感谢您的回复。

【问题讨论】:

    标签: c# android post oauth google-oauth


    【解决方案1】:

    好吧,事实证明它非常简单。provider 只是“Google”,仅此而已。我在 de C# 项目中的 RegisterClient 方法中找到了这个 provider name

    OAuthWebSecurity.RegisterClient(client, "Google", extraData);
    

    现在POST 工作了,除了消息"The required anti-forgery cookie "__RequestVerificationToken" is not present.",但至少我可以继续。我相信在使用CookieManager 时,将Cookie 添加到HttpPost 并不难。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-03-25
      • 2021-01-05
      • 1970-01-01
      • 1970-01-01
      • 2013-12-24
      • 1970-01-01
      相关资源
      最近更新 更多