C#OAuthWebSecurity Google提供商网址?

时间:2014-05-02 08:11:53

标签: c# android post oauth google-oauth

我使用以下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登录,并获得了GoogleApiClientPersoncom.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我很感激。

提前感谢您的回复。

1 个答案:

答案 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并不是很难。