这是一个内部门户,我正在寻找一个允许用户登录到他们的 gmail 帐户并查看他们的帐户的小部件。我尝试了 Google 小工具,但它显示以下错误“这是一个内置模块,因此忽略 UserPrefs 和 Content。” 此外,由于小工具将被停产,我不愿意将其用作长期解决方案。
甚至来自 widgetbox、netvibes 等的小部件似乎也无法正常工作。
是因为 Google 进行了一些政策更改,阻止了这些小部件的工作吗?还是我做错了什么。
我还尝试在我的网站中使用 Google 小部件,但不幸的是它不起作用。它给出的内容被忽略。
没有小部件不适用于我的代码。
我认为其中有政策变化。但我对此一无所知。
当您说“登录他们的帐户”时以及您想做什么。您可以在用户授予您的应用程序访问其帐户的权限时使用 OAuth。
Google 有自己的以多种语言编写的库 - 可以在此处找到一些使用 Java、Python 和 PHP 的示例:https ://developers.google.com/google-apps/gmail/xoauth2_libraries
当您使用 OAuth 时,您向 Google 注册,他们会为您提供 ConsumerKey 和 ConsumerSecret - 这就是您向 Google 申请的标识。
一旦你这样做,提供一个链接以允许他们登录 - 这会将他们带到谷歌登录,他们使用他们的帐户登录 - 然后他们授予权限。
我在使用带有 GMail 的 OAuth 时遇到了问题,但通过说他们的联系人成功地管理了它。例如,这是我用来检索所有用户联系人的代码
public List<Person> GetContacts()
{
OAuthParameters parameters = null;
GOAuthRequestFactory requestFactory = null;
ContactsService service = null;
ContactsQuery feedQuery = null;
ContactsFeed feed = null;
List<Person> contacts = null;
try
{
if (ConsumerKey == String.Empty) throw new ValueIsEmptyOrNullException("ConsumerKey");
if (ConsumerSecret == String.Empty) throw new ValueIsEmptyOrNullException("ConsumerSecret");
if (OAuthCallback == String.Empty) throw new ValueIsEmptyOrNullException("OAuthCallback");
if (SignatureMethod == String.Empty) throw new ValueIsEmptyOrNullException("SignatureMethod");
if (ApplicationName == String.Empty) throw new ValueIsEmptyOrNullException("ApplicationName");
if (Token == String.Empty) throw new ValueIsEmptyOrNullException("Token");
if (Nonce == String.Empty) throw new ValueIsEmptyOrNullException("Nonce");
if (Verifier == String.Empty) throw new ValueIsEmptyOrNullException("Verifier");
if (Scope == String.Empty)
Scope = "https://www.google.com/m8/feeds";
parameters = new OAuthParameters();
parameters.ConsumerKey = ConsumerKey;
parameters.ConsumerSecret = ConsumerSecret;
parameters.Scope = Scope;
parameters.Callback = OAuthCallback;
parameters.SignatureMethod = SignatureMethod;
parameters.Timestamp = Toolbox.GenerateTimeStamp();
parameters.Token = Token;
parameters.TokenSecret = TokenSecret;
parameters.Nonce = Nonce;
parameters.Verifier = Verifier;
requestFactory = new GOAuthRequestFactory("c1", ApplicationName, parameters);
service = new ContactsService(ApplicationName);
service.RequestFactory = requestFactory;
feedQuery = new ContactsQuery(ContactsQuery.CreateContactsUri("default"));
feed = service.Query(feedQuery);
if (feed.Entries.Count > 0)
{
contacts = new List<Person>();
foreach (ContactEntry contact in feed.Entries)
{
try
{
if (contact.Name != null)
{
Person person = new Person();
int idStart = contact.Id.Uri.ToString().LastIndexOf('/');
if (idStart > 0)
{
person.PersonId = contact.Id.Uri.ToString().Substring(contact.Id.Uri.ToString().LastIndexOf('/') + 1);
}
else
{
person.PersonId = contact.Id.Uri.ToString();
}
person.GivenName = contact.Name.GivenName;
person.Surname = contact.Name.FamilyName;
person.Birthday = contact.Birthday;
person.Initials = contact.Initials;
person.Location = contact.Location;
person.MaidenName = contact.MaidenName;
person.Occupation = contact.Occupation;
person.Photograph = contact.PhotoUri.ToString();
person.Surname = contact.Name.FamilyName;
if (contact.Emails.Count > 0)
person.Email = contact.Emails[0].Address;
contacts.Add(person);
}
}
catch (System.Exception ex)
{
throw ex;
}
finally
{
}
}
}
}
catch (Exception ex)
{
throw ex;
}
return contacts;
}